码迷,mamicode.com
首页 > 其他好文 > 详细

opencv笔记

时间:2015-05-02 23:30:31      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:opencv

1、             在计算机看来,图像只是一堆亮度各异的点;一副黑白的尺寸为M X N 的图像可以用一个M X N 的矩阵来表示;矩阵中的元素表示这个位置上的像素的亮度,数值越大表示该点越亮。

2、             一般来说,灰度图用2维矩阵表示,彩色(多通道)图像用3维矩阵(M X N X 3)表示;对于图像显示来说,目前大部分设备都是用无符号8位整数(类型为CV_8U)表示像素亮度。

3、             Mat:图像类,通用矩阵类,可以用于创建和操作多维矩阵。

4、             Mat 类可用构造函数创建图像,或采用creat()函数创建图像。

5、             模版类Vec,表示一个向量,可用于矩阵元素的表达。

6、             像素值的读取:(1at()函数:实现读取矩阵中的某个像素,或对某个像素进行赋值;优缺点:代码的可读性高,但效率并不很高,如果要遍历图像,并不推荐使用at()函数。

2)迭代器(iterator):遍历方便;

3)指针(ptr:运行效率高,可靠性不高。

7、选取图像局部区域的方法:如果将局部区域赋值给新的Mat对象,新的对象与原式对象公用相同的数据区域,并不申请新的内存,因此执行速率都比较快;(1)单行或单列选取:row()函数和col()函数;

2)选取多行或多列:Rang类:Rang(star,end)(注:包含star ,不含end)Rang::all();

3)选取感兴趣区域:一种是使用构造函数,如:Mat img(Size320240),CV_8UC3);Mat rot(img,Rect(10,10,100,100))Mat rot(img,Rang(10,100),Rang(10,100));另外一种是使用括号运算符:Mat rot=img(Rect(10,10,100,100))Mat rot=img(Rang(10,100),Rang(10,100));

4)选取对角线元素:diag(int d);d = 0时,表示主对角线;当d >0时,表示主对角线下方第d条次对角线;当d<0时,表示主对角线上方第d条次对角线;

8Mat类的内存管理:Mat类由两部分组成:矩阵头(矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵的指针;为了解决矩阵数据传递过大的问题,Opencv使用了引进计数机制;其思路是让每个Mat对象都有自己的矩阵头信息,但多个Mat对象可以共享同一个矩阵数据,即让多个矩阵指针指向同一地址。

9、格式转换:

1Mat转换为IplImage CvMat格式:直接通过赋值操作完成;

2IplImage CvMat转换为Mat格式:通过构造函数完成。

10、读取图像文件:

Mat imreadconst string & filename, int flags;

Flags >0时,返回3通道图像;

Flags=0 时,返回单通道图像;

Flags<0 时,则不对图像进行通道转换。

11、写入图像文件:

Bool imwrite(conststring& filename, InputArray image, const vector<int> & params =vector<int>());

参数paramsJPEG表示图像质量,取值范围:0100,默认95

                            PNG:表示压缩级别,取值范围09,默认是3

                            PPMPGMPBM:表示文件是以二进制还是纯文本方式存储,取值为1时,表示二进制方式存储,默认为1

注意:在保存文件时,如果文件已经存在,imwrite()函数不会进行提醒,将会直接覆盖以前的文件。

12、读取视频类:VidieoCapture 既可以从视频读取图像,又可以从摄像头读取图像;可以通过其构造函数打开资源或通过其方法open()函数打开资源,open()函数会调用released()函数,先释放已经打开的视频,再打开新视频。

13、写视频类:Videowriter(文件名,编解码器,帧频,宽度,高度);


opencv笔记

标签:opencv

原文地址:http://xiexiao.blog.51cto.com/10173801/1641319

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!