1. 程式人生 > >OpenCV學習筆記 - 安裝及執行第一個OpenCV程式

OpenCV學習筆記 - 安裝及執行第一個OpenCV程式

1、下載及安裝

 OpenCV是一套開源免費的圖形庫,主要有C/C++語言編寫,官網: http://opencv.org/ 。在 http://opencv.org/downloads.html 可以找到個版本和各種平臺的程式包。OpenCV的Windows平臺安裝包是放在SourceForge.net網站。

我下了2.4.4版,大概217M。安裝包其實就是一個壓縮包,安裝過程就是解壓到某個資料夾。我是安裝到 E:\Soft\opencv 目錄,安裝後文件夾如下:

我們只需要關注“build”資料夾即可,其他的可以不用管。“build”資料夾編譯後的檔案,我們可以直接使用。開啟“build”資料夾,如下

編寫過C++程式的都知道,要使用別人的編寫好的DLL,那麼需要三種檔案,即標頭檔案、字尾名為“lib”的連結檔案,字尾名為"dll"的動態庫檔案。如果使用靜態編譯方式,那麼需要標頭檔案和靜態庫檔案。X86是32位作業系統的庫,X64是64位作業系統的庫。

(1)“build\x86\vc10\bin”目錄下放的是OpenCV執行時所需的動態執行庫,

(2)“build\x86\vc10\lib”目錄放的是編譯OpenCV程式時所需的的動態連結庫,

(3)“build\x86\vc10\staticlib”目錄方式的靜態編譯時OpenCV所需要的靜態連結庫,如果是靜態編譯,執行時則不需要“build\x86\vc10\bin”目錄的DLL檔案,但編譯後的檔案較大。

由於我使用VS2010,所以只關注目錄 E:\Soft\opencv\build\x86\vc10 。為了使VS2010可以編譯OpenCV程式,我們需要對VS2010做一些設定,主要是讓VS2010能找到OpenCV的標頭檔案和連結庫。在“OpenCV安裝目錄\build\docs”目錄下有個名為“opencv_tutorials.pdf”的PDF文件,裡面的1.5節“How to build application with OpenCV inside the Micorosoft Visual Studio”說明了如何配置VS2010。

如果想一次配置對所有的C++專案都適用,可以按如下配置:

1、在VS2010開啟任何一個C++專案,然後選擇“檢視”=》“其他視窗”=》“屬性管理器”,如下圖:

開啟的屬性管理器視窗如下:

2、在開啟的屬性管理器視窗中,展開“Degug|Win32”節點,雙擊“Micorsoft.Cpp.Win32.user”會開啟全域性屬性設定視窗,

(1)在左邊選擇“VC++目錄”;

(2)在右邊“包含目錄”中加上OpenCV的標頭檔案目錄,我的標頭檔案目錄是放在“E:\Soft\opencv\build\include”,這個根據OpenCV的安裝目錄,一般在build\include目錄;

(3)在右邊“庫目錄”中加上OpenCV的連結庫目錄,我的VS2010庫目錄是放在“E:\Soft\opencv\build\x86\vc10\lib”,這個是根據OpenCV的安裝目錄和IDE版本決定,根據自己的情況選擇。

對“Release|Win32”節點下的“build\x86\vc10\bin”也做同樣配置。

2、第一個OpenCV程式

通過以上配置,OpenCV的開發環境已經搭建起來,下面我們來寫第一個OpenCV HelloWorld程式。

開啟VS2010,新建一個Win32控制檯應用程式

新建後的專案如下:

 雙擊“HelloWorld.cpp”檔案,輸入如下內容

//C++輸入輸出庫標頭檔案
#include <iostream> 
//OpenCV核心庫標頭檔案 
#include <opencv2\core\core.hpp> 
//OpenCV圖形處理標頭檔案 
#include <opencv2\highgui\highgui.hpp> 
//OpenCV核心動態連結庫,和core.hpp標頭檔案對應,d代表除錯版本 
#pragma comment(lib,"opencv_core242d.lib") 
//OpenCV圖形處理動態連結庫,和highgui.hpp標頭檔案對應,d代表除錯版本 
#pragma comment(lib,"opencv_highgui242d.lib") 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
	//視窗名稱 
	std::string windowName = "HelloWorld"; 
	//影象名稱 
	std::string imgFile = "opencv-logo.png"; 
	//讀入影象 
	cv::Mat image = cv::imread(imgFile,CV_LOAD_IMAGE_COLOR); 
	//如果無法讀取圖形 
	if(!image.data) 
	{ 
		std::cout << "無法開啟影象檔案" <<std::endl; 
		//暫停視窗 
		system("PAUSE");
		return -1; 
	} 
	//建立一個新視窗 
	cv::namedWindow(windowName,CV_WINDOW_AUTOSIZE); 
	//將影象顯示都新建立的視窗中 
	cv::imshow(windowName,image); 
	//等待,直到使用者按任意鍵時退出 
	cv::waitKey(0);
	return 0;
}

如果編譯無錯誤,要執行程式,還要複製一些必要的檔案: 

(1)在OpenCV的目錄下的doc資料夾有一個名為"opencv-logo.png"的影象檔案,將其複製到“HelloWorld”專案的資料夾下,

(2)到OpenCV安裝目錄\build\x86\vc10\bin\ 複製三個檔案 opencv_core242d.dll、opencv_highgui242d.dll、tbb_debug.dll 三個檔案到解決方案資料夾下的Degug目錄,也就是編譯後可執行檔案所在的目錄。

如果一切正常,執行後的效果如下:

 

3、OpenCV學習資源

2.3.2版本的幫助文件翻譯 http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html ,是OpenCV安裝目錄\build\docs\opencv_tutorials.pdf文件的中文翻譯。

http://www.opencv.org.cn/ 也是學習OpenCV的好地方。

http://wiki.opencv.org.cn/index.php OpenCV的各種中文資料。

http://opencv.org/documentation.html 官方的線上幫助文件。

http://www.sigvc.org/bbs/ 視覺計算論壇