图像基础知opencv.docVIP

  • 6
  • 0
  • 约 4页
  • 2016-12-03 发布于贵州
  • 举报
图像基础知opencv

图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率.图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大灰度等级.比如一幅单色图像,若每个象素有8位,则最大灰度数目为2的8次方,即256.一幅彩色图像RGB3个分量的象素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种. 例如:一幅画的尺寸是1024*768,深度为16,则它的数据量为1.5M。 图像通道,在RGB色彩模式下就是指那单独的红色、绿色、蓝色部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像。 一幅完整的图像,红色绿色蓝色三个通道缺一不可。即使图像中看起来没有蓝色,只能说蓝色光的亮度均为0或者各像素值的红色和绿色通道不全为0,但不能说没有蓝色通道存在。 “存在、亮度为零”和“不存在”是两个不同的概念。 一幅图像,如果关闭了红色通道,那么图像就偏青色。如果关闭了绿色通道,那么图像就偏洋红色。如果关闭了蓝色通道,那么图像就偏黄色。 这个现象再次印证了反转色模型:红色对青色、绿色对洋红色、蓝色对黄色。 基本数据类型 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; CvRect结构 该结构是用来表示矩形框的偏移和大小。 typedef struct CvRect { int x; /* 方形的最左角的x-坐标 */ int y; /* 方形的最上或者最下角的y-坐标 */ int width; /* 宽 */ int height; /* 高 */ }CvRect; 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等格式的图像。其函数原型如下: I

文档评论(0)

1亿VIP精品文档

相关文档