opencv2 的学习我们从读取图像开始。
imread
- 头文件:
#include "opencv2/highgui/highgui.hpp" //imread()
#include "opencv2/core/core.hpp" //Class Mat
- 函数格式:
Mat imread(const string& filename, int flags=1 )
- 返回值: 如果读取失败,则
Mat::data==NULL
;成功,返回Mat
,在下一篇文章中我们将初步介绍Mat
。 - 参数说明:
- filename: 待读取图像的文件名。
- flags: 说明按何种颜类型读取图像,有效的值为:
enum{
// 8bit, color or not
IMREAD_UNCHANGED =-1,
// 8bit, gray
IMREAD_GRAYSCALE =0,
// ?, color
IMREAD_COLOR =1,
// any depth, ?
IMREAD_ANYDEPTH =2,
// ?, any color
IMREAD_ANYCOLOR =4
};
例子
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if (argc != 2)
{
cout << " Wrong Arguments!\n" << endl;
return -1;
}
Mat image = imread(argv[1], IM_COLOR); // Read the file
if (!image.data) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl;
return -1;
}
return 0;
}
延伸阅读--色彩深度
摘自 wikipedia。
色彩深度计算机图形学领域表示在位图或者视频帧缓冲区中储存1像素的颜色所用的位数,它也称为位/像素(bpp)。色彩深度越高,可用的颜色就越多。
色彩深度是用“n位颜色”(n-bit colour)来说明的。若色彩深度是n位,即有2n种颜色选择,而储存每像素所用的位数就是n。常见的有:
1位:2种颜色,单色光,黑白二色,用于compact Macintoshes。
2位:4种颜色,CGA,用于gray-scale早期的NeXTstation及color Macintoshes。
3位:8种颜色,用于大部分早期的电脑显示器。
4位:16种颜色,用于EGA及不常见及在更高的分辨率的VGA标准,color Macintoshes。
5位:32种颜色,用于Original Amiga chipset。
6位:64种颜色,用于Original Amiga chipset。
8位:256种颜色,用于最早期的彩色Unix工作站,低分辨率的VGA,Super VGA,AGA,color Macintoshes。
灰阶,有256种灰色(包括黑白)。若以24位模式来表示,则RGB的数值均一样,例如(200,200,200)。
12位:4,096种颜色,用于部分硅谷图形系统,Neo Geo,彩色NeXTstation及Amiga系统于HAM mode。
16位:65,536种颜色,用于部分color Macintoshes。
24位:16,777,216种颜色,真彩色,能提供比肉眼能识别更多的颜色,用于拍摄照片。
30/36/48位:全彩。
另外有高动态范围影像(High Dynamic Range Image),这种影像使用超过一般的256色阶来储存影像,通常来说每个像素会分配到32+32+32个bit来储存颜色资讯,也就是说对于每一个原色都使用一个32bit的浮点数来储存.
参考文献
- The OpenCV Reference Manual Release 2.4.9.0。
- The OpenCV Tutorials Release 2.4.9.0。
- Wikipedia。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。