OpenCV(一)显示一幅图像代码详细讲解

#include "cv.h"
#include "highgui.h"
int main()
{
    IplImage* img = cvLoadImage("G:/test.bmp",-1);
    cvNamedWindow( "test", 0 );
    cvShowImage("test", img);
    cvWaitKey(0);
    cvReleaseImage( &img );
    cvDestroyWindow( "test" );
    return 0;
}
详细介绍这段代码的含义,
IplImage* img = cvLoadImage("G:/test.bmp",-1);
将图像文件加载到内存,cvloadImage()函数是一个高层调用接口,用过文件名确定被加载文件的格式。该函数可以读取绝大多数类型的图像文件。函数执行完之后返回一个指针,该指针指向一块为描述改图像文件的数据结构(IplImage)而分配的内存块。
cvNamedWindow( "test", 0 );
cvNamedWindow()函数也是一个高层调用接口,该函数有HighGUI库提供。该函数用于在屏幕上创建一个窗口,被显示的图像包含于该窗口中;第一个参数"test"指定了该窗口的窗口标题,其他函数与该窗口进行交互,我们就用该参数值来引用它。第一个参数就是给这个窗口命名。第二个参数定义窗口的属性,该参数值为0时,窗口的大小不会因为图像的大小而改变,也就是图像要根据窗口的大小来进行伸缩。数值为:CV_WINDOW_AUTOSIZE,显然窗口会根据图像的大小来改变。
cvShowImage("test", img);
只要有一个与某个图像文件相对应的Iplmage*类型的指针,我们就可以在一个 已创建好的窗口(使用cvNamedWindow()函数创建)中使用cvShowImage ( )函数显 示该图像。cvShow工mage ( )函数通过设置其第一个参数确定在哪个已存在的窗口中 显示图像。cvShow工mage ( )函数被调用时,该窗口将被重新绘制,并且图像也会显 示在窗口中。如果该窗口在创建时被指定CV_WINDOW_AUTOSIZE标志作为 cvNamedWindow()函数的第二个参数,该窗口将根据图像的大小自动调整为与图 像一致。
cvWaitKey(0);
cvWaitKey ( )函数的功能是使程序暂停,等待用户触发一个按键操作。但如果将该 函数参数设为一个正数,则程序将暂停一段时间,时间长为该整数值个毫秒单位, 然后继续执行程序,即使用户没有按下任何键。当设置该函数参数为O或负数时, 程序将一直等待用户触发按键操作。
cvReleaseImage( &img );
一旦用完加载到内存的图像文件,我们就可以释放为该图像文件所分配的内存。我 们通过为cvReleaseImage ( )函数传递一个类型为Ip1Image*的指针参数调用该函 数,用以执行内存释放操作。对cvReleaseImage ( )函数的调用执行完毕后,img 指针将被设置为NULL。
cvDestroyWindow( "test" );
最后,可以销毁显示图像文件的窗口。cvDestroyWindow()函数将关闭窗口, 并同时释放为该窗口所分配的所有内存(包括窗口内部的图像内存缓冲区,该缓 冲区中保存了与img指针相关的图像文件像素信息的一个副本)。因为当应用程 序的窗口被关闭时,该应用程序窗口所占用的一切资源都会由操作系统自动释 放,所以对一些简单程序,不必调用cvDestroyWindow()或cvReleaseImage ( ) 函数显式释放资源。但是,养成习惯每次都调用这些函数显式释放资源总是有好 处的。
WARM Tip将在下一篇文章中详细讲解如何播放一段视频(摄像头获取视频)。


你可能感兴趣的:(OpenCV)