Opencv入门(显示图像)

来源:互联网 发布:sentinel 2数据 envi 编辑:程序博客网 时间:2024/06/08 17:16

Opencv入门(显示图像)

用于从磁盘加载并在屏幕上显示一副图像的简单Opencv程序(摘自《学习Opencv》)

 1. #include "highgui.h" 2. int main(int argc, char** argv) 3. { 4.     IplImage* img = cvLoadImage(argv[1]); 5.     cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE); 6.     cvShowImage("Example1", img); 7.     cvWaitKey(0); 8.     cvReleaseImage(&img); 9.     cvDestroyWindow("Example1"); 10. }

以上程序编译后,就可以在命令行模式下通过输入一个参数来执行它。执行过程中向内存中加载一幅图像,并将该图像显示于屏幕上,直到按下键盘的任意一个键后它才关闭窗口并退出程序。下面进行详细分析:

IplImage* img = cvLoadImage(argv[1]);

将图形文件加载至内存,cvLoadImage函数是一个高层调用接口,通过参数来确定被加载的文件格式,能够自动分配图像数据结构所需的内存。可以读取大多数格式类型的图像文件(BMP/DIB/JPEG/JPE/PNG/PBM/PGM/PPM/SR/RAS/TIFF)。返回值为一个指向一块为描述该图像文件的数据结构(IplImage结构体)。Opencv常使用IplImage结构体处理诸如单通道/多通道/整形/浮点型等所有类型的图像文件。

cvNamedWindow(“Example1”, CV_WINDOW_AUTOSIZE);

也是个高层调用接口,该函数由HignGUI库提供。用于在屏幕上创建一个窗口,将被显示的图像包含于该窗口中。参数1为窗口标题,如果要使用HighGUI库所提供的其他函数与该窗口进行交互时,需要通过该参数值引用这个窗口。参数2定义了窗口的属性,该参数为0时为默认值,窗口的大小不会因图像的大小而改变,图像只能在窗口中根据窗口的大小进行拉伸或缩放。当设置为CV_WINDOW_AUTOSIZE时,窗口则会根据图像的实际大小自动进行拉伸或缩放来容纳图像。

cvShowImage(“Example1”, img);

在参数1中显示参数2,该函数被调用时,该窗口将被重新绘制且图像也会显示在窗口中。

cvWaitKey(0);

等待暂停函数,如果参数为正,则程序将暂停一段时间,时间为该参数值个毫秒单位,然后继续执行程序,即使用户没有按下任何键。当该参数为0或负,程序将一直等待永华触发按键操作。

cvReleaseImage(&img);

释放内存,释放参数所指向的内存块,执行完毕后,img被设置为NULL。

cvDestroyWindow(“Example1”);

关闭销毁窗口,并释放为该窗口所分配的所有内存呢(包括窗口内部的图像内存缓冲区,该缓冲区中保存了与img指针相关的图像文件像素信息的一个副本)。