OpenCV学习笔记(一):图像显示

《WIN10+VS2015+OpenCV3.1.0配置》文章中配置好OpenCV后第一个测试程序就是显示图像,但是显示图像不止这一种方法,索性就记录下我目前知道的其他图像显示方法,以便之后检索,其中不完善之处希望读者能够指出。

根据百度文库上的这篇文章,知道OpenCV上常见的有四种表示图像的结构。分别是CvArr,CvMat,IplImage,Mat。

CvArr

老版本的图像表示结构。是一个抽象基类,在函数原型中,常见到CvArr(CvArr*),这就允许把CvMar* 或者IplImage* 传递到程序或函数参数中了。个人觉得不是很重要,以后应该也不会用到很多,所以不深入了解了。

CvMat

是一种用矩阵结构来表示图形的方式。具体详见:http://blog.csdn.net/augusdi/article/details/8864950

IplImage

是较老版本的一种图像类型,对图像进行编码的基本结构。这些图像可能是灰度,彩色,4通道的(RGB+ alpha)。其中每个通道可以包含任意的整数或浮点数。

用法示例:

IplImage *iplImg = cvLoadImage("C:\\Users\\Public\\Pictures\\Sample Pictures\\1.jpg", 1);
//最后的1表示读取的是彩色图片,如果需要把原图转换成灰白图片的话就是0
cvShowImage("picture", iplImg);
waitKey(10000);
cvReleaseImage(&iplImg);
cvDestroyWindow("picture");

Mat

新版本中的图像容器,是和Matlab中的函数对应的。基本上讲 Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。矩阵头的尺寸是常数值,但矩阵本身的尺寸会依图像的不同而不同,通常比矩阵头的尺寸大数个数量级。

用法示例:

Mat img = imread("C:\\Users\\Public\\Pictures\\Sample Pictures\\1.jpg");
imshow("picture", img);
waitKey(10000);
img.release();
cvDestroyWindow("picture");

参考文献:
1. http://blog.csdn.net/wangxuwen2/article/details/51848634
2. http://wenku.baidu.com/link?url=ugU2DfQU-tQ8w-RC-8IMj1uWiHWPGS3brvZaGKuaUdqeHjEFIFqaCly6d2nYkoebixJo7wgxKmDARf8GESBTVqd8wh59Rpy_rvXNwYZxn_y
3. http://blog.csdn.net/augusdi/article/details/8864950

你可能感兴趣的:(OpenCV,opencv)