OpenCV開發(fā)包提供了讀取各種類型的圖像文件、視頻內(nèi)容以及攝像機(jī)輸入的功能。這些功能是OpenCV開發(fā)包中所包含的HighGUI工具集的一部分。本次主要分享使用OpenCV加載圖像并顯示在屏幕上。 picture_display.cpp: #include #include #include #include int main (int argc, char **argv) { IplImage* img = cvLoadImage(argv[1]); cvNamedWindow("Rayeager PX2", CV_WINDOW_AUTOSIZE); cvShowImage("Rayeager PX2", img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("Rayeager PX2"); } makefile: INCLUDE = $(shell pkg-config --cflags opencv) LIBS = $(shell pkg-config --libs opencv) SOURCES = picture_display.cpp # 目標(biāo)文件 OBJECTS = $(SOURCES:.cpp=.o) # 可執(zhí)行文件 TARGET = picture_display $(TARGET) ![]() g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS) $(OBJECTS) ![]() g++ -c $(SOURCES) clean: rm $(OBJECTS) $(TARGET) # 編譯規(guī)則 $@代表目標(biāo)文件 $< 代表第一個依賴文件 %.o:%.cpp g++ -I $(INCLUDE) -o $@ -c $< 代碼講解: 程序中的IplImage* img = cvLoadImage(argv[1]);的功能是將圖像文件加載至內(nèi)存。cvLoadImage()函數(shù)是一個高層調(diào)用接口,它通過文件名確定被加載文件的格式;并且該函數(shù)自動分配圖像數(shù)據(jù)結(jié)構(gòu)所需的內(nèi)存。 cvNamedWindow("Rayeager PX2", CV_WINDOW_AUTOSIZE); cvNamedWindow()函數(shù)也是一個高層調(diào)用接口,該函數(shù)由HighGUI庫提供。函數(shù)用于在屏幕上創(chuàng)建一個窗口,將被顯示的圖像包含于該窗口中。函數(shù)第一個參數(shù)指定了該窗口的窗口標(biāo)題,第二個參數(shù)定義了窗口的屬性。該參數(shù)可被設(shè)置為0或CV_WINDOW_AUTOSIZE,設(shè)置為0時,窗口的大小不會因圖像的大小而改變;設(shè)置為CV_WINDOW_AUTOSIZE時,窗口則會根據(jù)圖像的實(shí)際大小自動進(jìn)行拉伸或縮放。 cvShowImage("Rayeager PX2", img); 該函數(shù)用于顯示圖像,cvShowImage()函數(shù)通過設(shè)置其第一個參數(shù)確定在哪個已存在的窗口中顯示圖像。 cvWaitKey(0);的功能是使程序暫停,等待用戶觸發(fā)一個按鍵操作。 cvReleaseImage(&img);的功能是釋放為該圖像所分配的內(nèi)存。 cvDestroyWindow("Rayeager PX2");的功能是銷毀顯示圖像文件的窗口。 在源代碼所在的文件夾中make生成可執(zhí)行文件picture_display,之后./ picture_display Rayeager PX2.jpg就能顯示文件夾中的Rayeager PX2.jpg圖像 ![]() ![]() 源代碼: ![]() 感謝Ickey電子工程社區(qū) fjjjnk1234的分享 |