图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率.图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大灰度等级.比如一幅单色图像,若每个象素有8位,则最大灰度数目为2的8次方,即256.一幅彩色图像RGB3个分量的象素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种.
例如:一幅画的尺寸是1024*768,深度为16,则它的数据量为1.5M。
图像通道,在RGB色彩模式下就是指那单独的红色、绿色、蓝色部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像。
一幅完整的图像,红色绿色蓝色三个通道缺一不可。即使图像中看起来没有蓝色,只能说蓝色光的亮度均为0或者各像素值的红色和绿色通道不全为0,但不能说没有蓝色通道存在。
“存在、亮度为零”和“不存在”是两个不同的概念。
一幅图像,如果关闭了红色通道,那么图像就偏青色。如果关闭了绿色通道,那么图像就偏洋红色。如果关闭了蓝色通道,那么图像就偏黄色。
这个现象再次印证了反转色模型:红色对青色、绿色对洋红色、蓝色对黄色。
每一通道可以用一幅灰度图
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示
基本数据类型
1)CvPoint结构
在这些数据类型中最简单的就是CvPoint,它表示二维坐标系下的点,类型为整型,定义如下:
typedef struct CvPoint
{
int x; /* x坐标, 通常以0为基点*/
int y; /* y坐标, 通常以0为基点*/
} CvPoint;
2)CvSize结构
CvSize结构用来表示矩形框大小,以像素为精度,结构体中分别定义了矩形的宽高和高度,定义如下:
typedef struct Cvsize
{
int width;/*矩形宽度,单位为像素*/
int height;/*矩形高度,单位为像素*/
}CvSize;
3)CvRect结构
该结构是用来表示矩形框的偏移和大小。
typedef struct CvRect
{
int x; /* 方形的最左角的x-坐标*/
int y; /* 方形的最上或者最下角的y-坐标*/
int width; /* 宽*/
int height; /* 高*/
}CvRect;
4)CvScalar 结构
该结构是用来定义存放1- 4个数值的数组。
typedef struct Cvscalar
{
double val[4];
}CvScalar; //可用来表示RGBA的值,A=alpha透明度
5)Iplimage 结构
OpenCV库主要是使用“IplImage”结构体来创造和处理图像。IplImage结构来源于inter的另外一个函数库IPL,该函数库主要是针对图像处理。定义如下: typedef struct IplImage
{
int nSize; /*IplImage大小*/
int ID; /*版本(=0)*/
int nChannels; /*大多数opencv函数支持1~4个信道*/
int depth; /*像素的位深度*/
int dataOrder; /*0:交叉存取颜色信道。1:分开的颜色信道。只有
cvCreateImage可以创建交叉存取图像*/
int origin; /*0:顶—左结构,1:底—左结构*/
int width; /* 图像宽像素*/
int heighet; /*图像高像素*/
struct_IplROI *roi; /*图像感兴趣区域*/
int imageSize; /*图像数据大小*/
int widthStep; /*排列的图像大小,以字节为单位*/ }IplImage;
常用函数:
创建图像:8深度3通道
Iplimage* src="/cvCreateImage"(cvSize(400,300), IPL_DEPTH_8U,3);
读取图像
IplImage* src="/cvLoadImage"("lena.jpg",-1); /* 定义IplImage指针变量src,并且将src指向当前目录下的图像lena.jpg */
函数cvLoadImage载入指定图像文件,并返回指向该文件的IplImage指针。函数支持bmp、jpg、png、tiff等格式的图像。其函数原型如下:
IplImage* cvLoadImage( const char* filename, int iscolor);
其中,filename 是待载入图像的名称,包括图像的扩展名;iscolor是一个辅助参数项,可选正数、零和负数三种值,正数表示作为三通道图像载入,零表示该图像作为单通道图像,负数表示载入图像的通道数由图像文件自身决定。
定义显示窗口
cvNamedWindow("src",CV_WINDOW_AUTOSIZE); /* 定义一个窗口名为src的显示窗口*/
函数cvNamedWindow定义一个窗口,用于显示图像。其函数原型如下:
int cvNamedWindow( const char* name, unsigned long flags );
其中,name是窗口名,flags是窗口属性指标值,可以选择
CV_WINDOW_AUTOSIZE和0两种值。CV_WINDOW_AUTOSIZE表示窗口尺寸与图像原始尺寸相同,0表示以固定的窗口尺寸显示图像。
图像显示函数
cvShowImage("src",src); /* 在src窗口中,显示src指针所指的图像*/
函数cvShowImage是在指定的窗口中显示图像,其函数原型如下:
void cvShowImage( const char* name, const CvArr* image ); 其中,name是窗口名称,image是图像类型指针,一般是IplImage指针。
图像保存函数
函数cvSaveImage以指定的文件名保存IplImage类型的指针变量,其函数原型如下:
int cvSaveImage( const char* filename, const CvArr* image );
其中,filename是图像保存路径和名称,image是IplImage指针变量。
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
: 函数cvSaveImage保存图像到指定文件。图像格式的的选择依赖于filename 的扩展名,请参考cvLoadImage。只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换;或者使用通用的cvSave保存图像为XML或者YAML格式。
图像销毁函数
函数cvReleaseimage销毁已定义的IplImage指针变量,释放占用内存空间。其函数原型如下:
void cvReleaseImage( IplImage** image );
其中,image为已定义的IplImage指针。
1)等待按键事件cvWaitKey
int cvWaitKey( int delay=0 );
delay
延迟的毫秒数。
函数cvWaitKey无限制的等待按键事件(delay<=0时);或者延迟"delay"毫秒。返回值为被按键的值,如果超过指定时间则返回-1。
注释:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。
视频I/0