先贴代码:
#include "highgui.h"
int main(int argc, char **argv)
{
IplImage* img;
if (argc == 2 && (img = cvLoadImage(argv[1], 1)) != 0)
{
cvNamedWindow("Image", 1);
cvShowImage("Image", img);
cvWaitKey(0);
cvDestroyWindow("Image");
cvReleaseImage(&img);
return 0;
}
return -1;
}
当以上代码编译后,我们就可以在命令行模式下执行他,效果如下:
cvLoadImage(argv[1], 1)是将图像文件记载进内存。cvLoadImage()函数是一个高层调用接口,其源码在.../OpenCV/otherlibs/highgui/loadsave.cpp里,它通过文件名确定被加载文件的格式;而且该函数将自动分配图像数据结构所需要的内存。cvLoadImage()函数可支持绝大多数格式类型的图像文件,包括BMP、DIB、JPEG、JPE、PNG、PBM、PGM、PPM、SR、RAS和TIFF。该函数执行结束后返回一个指向图像数据结构(IplImage)的指针,该指针指向一块为描述该图像文件而分配的内存块。
cvNamedWindow()函数也是一个高层调用接口,其作用是在屏幕上创建一个窗口,将被显示的图像包含于该窗口中。函数的第一个参数指定了该窗口标题,第二个参数定义了窗口的属性,该参数可被设置为0或CV_WINDOW_AUTOSIZE,设置为0表示窗口的大小不会因为图像的大小而改变,图像只能在窗口中根据窗口的大小拉伸或缩放;而设置为CV_WINDOW_AUTOSIZE时,窗口则会根据实际大小而自动进行拉伸或缩放。
cvShowImage("Example1", img)函数通过设置其第一个参数确定在哪个已存在的窗口中显示图像,第二个参数确定将哪个图像显示在窗口中。
cvWaitKey(0)的功能是使程序暂停,等待用户触发一个按键操作。如果参数设置为正数则程序将暂停该整数值个毫秒单位后继续执行,如果参数为0或负数则一直等待用户输入。
cvDestroyWindow("Image");销毁显示图像文件的窗口,传入窗口标题。
cvRealseImage(&img); 释放刚才为图像文件所分配的内存