OpenCV常用的图像和矩阵操作总结

  • 格式:doc
  • 大小:80.00 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OpenCv常用图像和矩阵操作

目录

学习资料 (2)

书籍 (2)

网站: (2)

本地安装目录 (2)

图像IplImage (3)

Structure IplImage (3)

图像的常用操作 (4)

图像载入函数 (4)

窗口定义函数 (4)

图像显示函数 (4)

图像保存函数 (4)

图像销毁函数 (5)

存取图像像素 (5)

简单的方法 (8)

麻烦的方法 (9)

恰当的方法 (12)

cvmSet(M,i,j,; Mb -> Mc

cvDiv(Ma, Mb, Mc); Mb -> Mc

cvAddS(Ma, cvScalar, Mc); Vb -> res

cvCrossProduct(&Va, &Vb, &Vc); 单矩阵操作: (13)

其他 (14)

Shell函数显示图片 (14)

IplImage 到cvMat的转换 (14)

学习资料

书籍

Learning OpenCV(影印版)

作者:Gary Bradski, Adrian Kaehler

出版社:东南大学出版社

学习OpenCV(中文版)

作者:Gary Bradski, Adrian Kaehler

译者:于仕琪刘瑞祯

出版社:清华大学出版社

OpenCV中文教程

作者:刘瑞祯于仕琪

网站:

本地安装目录

在安装目录\docs 下有各种学习资料

只用在本地安装目录下面就可以查询到大部分需要的信息,当然也可以直接百度,google

图像IplImage

Structure IplImage

OpenCv中图像的结构体为IplImage,位于头文件中,IplImage 结构体的定义如下:32F64F只有cvCreateImage可以创建交叉存取图像*/

int origin; /*图像原点位置:0表示顶-左结构,1表示底-左结构*/

int align; /* 图像行排列方式(4 or 8),在OpenCV 被忽略,使用widthStep 代替*/ int width; /* 图像宽像素数*/

int height; /* 图像高像素数*/

struct _IplROI *roi; /* 图像感兴趣区域,当该值非空时,

只对该区域进行处理*/

struct _IplImage *maskROI; /* 在OpenCV中必须为NULL */

void *imageId; /* 同上*/

struct _IplTileInfo *tileInfo; /*同上*/

int imageSize; /* 图像数据大小(在交叉存取格式下

ImageSize=image->height*image->widthStep),单位字节*/

char *imageData; /* 指向排列的图像数据*/

int widthStep; /* 排列的图像行大小,以字节为单位*/

int BorderMode[4]; /* 边际结束模式, 在OpenCV 被忽略*/

int BorderConst[4]; /* 同上*/

char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的*/

} IplImage;}

IplImage;

参数widthStep包括相邻行的同列点之间的字节数。仅凭变量width是不能计算这个值的,因为为了处理过程更高效每行都会用固定的字节数来对齐;因此在第i行末和第i+1行开始处可能会有些冗于字节。参数imageData包含一个指向第一行图像数据的指针。如果图像中有些独立的平面(如当dataOrder = IPL_DATA_ORDER_PLANE)那么把它们作为单独的图像连续摆放,总行数为height和nChannels的乘积。但通常情况下,它们是交错的,使得行数等于高度,而且每一行都有序地包含交错的通道。

ROI-- 感兴趣的区域(ROI),实际上它是另一个IPL/IPP 结构IplROI的实例。IplROI 包含xOffset,yOffset,height,width和coi成员变量,其中COI代表channel of interest(感兴趣的通道)。ROI的思想是:一旦设定ROI,通常作用于整幅图像的函数便会只对ROI 所表示的子图像进行操作。如果IplImage变量中设置了ROI,则所有的OpenCV函数就会使用该ROI变量。如果COI被设置成非0值,则对该图像的操作就只作用于被指定的通道上了。不幸的是,许多OpenCV函数都忽略参数COI。

图像的常用操作

图像载入函数

函数cvLoadImage载入指定图像文件,并返回指向该文件的IplImage指针。函数支持bmp、jpg、png、tiff等格式的图像。其函数原型如下:

IplImage* cvLoadImage( const char* filename, int iscolor);

其中,filename 是待载入图像的名称,包括图像的扩展名;iscolor是一个辅助参数项,可选正数、零和负数三种值,正数表示作为三通道图像载入,零表示该图像作为单通道图像,负数表示载入图像的通道数由图像文件自身决定。

窗口定义函数

函数cvNamedWindow定义一个窗口,用于显示图像。其函数原型如下:

int cvNamedWindow( const char* name, unsigned long flags );

其中,name是窗口名,flags是窗口属性指标值,可以选择CV_WINDOW_AUTOSIZE 和0两种值。CV_WINDOW_AUTOSIZE表示窗口尺寸与图像原始尺寸相同,0表示以固定的窗口尺寸显示图像。

图像显示函数

函数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指针变量。

Trick:

如果要保存一组图像到result文件夹,图像个数为n,保存名称按照一定的序号递增,假设为,,,,…, ,则

操作为:

char * f[30];

for(int i=0; i

{

相关主题