先貼代碼:
#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); 釋放剛才為圖像文件所分配的內存