1. 程式人生 > >【OpenCV入門指南】第一篇 安裝OpenCV

【OpenCV入門指南】第一篇 安裝OpenCV

               

【OpenCV第一篇】安裝OpenCV

本篇主要介紹如何下載OpenCV安裝程式,如何在VS2008下安裝配置OpenCV,文章最後還介紹了一個使用OpenCV的簡單小例子。

一.OpenCV的下載

下載完成後,雙擊執行exe,選擇輸出目錄,我選擇的是D:\opencv。然後解壓縮就完成了安裝。安裝過程如下圖所示:

二.在我的電腦中配置OpenCV

在“我的電腦”右擊彈出“系統屬性”對話方塊,選擇“高階”再點選“環境變數”,然後再編輯path,在“編輯使用者變數”對話方塊的變數值輸入以下三條,注意用“;”來分開。

D:\opencv\opencv\build\x86\vc9\bin;

D:\opencv\opencv\build\x86\mingw\bin;

D:\opencv\opencv\build\common\tbb\ia32\vc9;

三.在VS2008中加入OpenCV

VS2008中點選“工具”,再點選“選項”,然後選擇“專案和解決方案”,手動加入庫檔案,引用檔案和包含檔案即可完成OpenCVVS2008的匯入。

四.第一個OpenCV程式

下面是最簡單的OpenCV使用例子,功能也很簡單——載入影象檔案並顯示出來。程式碼如下:

//顯示影象檔案#include <opencv2/opencv.hpp>using namespace std;#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\""
)
int main()const char *pstrImageName = "衝浪大師賽001.jpg"const char *pstrWindowsTitle = "OpenCV第一個程式(http://blog.csdn.net/MoreWindows)"//從檔案中讀取影象 IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED); //建立視窗 cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE); //在指定視窗中顯示影象 cvShowImage(pstrWindowsTitle, pImage); //等待按鍵事件
 cvWaitKey(); cvDestroyWindow(pstrWindowsTitle); cvReleaseImage(&pImage); return 0;}

對程式碼中的主要函式進行下講解:

1.建立視窗 cvNamedWindow

函式名稱:cvNamedWindow
函式功能:建立視窗
函式原型:
int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );

引數說明:
第一個引數表示
視窗的名字,它被用來區分不同的視窗,並被顯示為視窗標題。被建立的視窗可以通過它們的名字被引用。第二個引數表示視窗屬性標誌。目前唯一支援的標誌是CV_WINDOW_AUTOSIZE。當這個標誌被設定後,使用者不能手動改變視窗大小,視窗大小會自動調整以適合被顯示影象。函式cvNamedWindow建立一個可以放置影象和trackbar的視窗。

注意:
如果已經存在這個名字的視窗,這個函式將不做任何事情。

2.在指定視窗中顯示影象 cvShowImage

函式名稱:cvShowImage
函式功能:在指定視窗中顯示影象
函式原型:
void cvShowImage
( const char* name, const CvArr* image );
引數說明:

第一個引數:視窗的名字。第二個引數:被顯示的影象。

3.等待按鍵事件 cvWaitKey

函式名稱:cvWaitKey

函式功能:等待按鍵事件

函式原型:
int cvWaitKey
( int delay=0 );
引數說明:

第一個引數:延遲的毫秒數,當delay<=0時表示無限等待。

函式返回值:

如果超過指定時間則返回-1,否則返回被按鍵的值。

編譯,居然出錯了!!錯誤資訊如下:

1>正在連結...

1>opencv_test1.obj : error LNK2019: 無法解析的外部符號_cvReleaseImage,該符號在函式_main 中被引用

1>opencv_test1.obj : error LNK2019: 無法解析的外部符號_cvDestroyWindow,該符號在函式_main 中被引用

1>opencv_test1.obj : error LNK2019: 無法解析的外部符號_cvWaitKey,該符號在函式_main 中被引用

1>opencv_test1.obj : error LNK2019: 無法解析的外部符號_cvShowImage,該符號在函式_main 中被引用

1>opencv_test1.obj : error LNK2019: 無法解析的外部符號_cvNamedWindow,該符號在函式_main 中被引用

1>opencv_test1.obj : error LNK2019: 無法解析的外部符號_cvLoadImage,該符號在函式_main 中被引用

現在如何解決這個問題了?既然是在連結時出的錯,說明肯定有靜態庫沒有被編譯器找到。因此我們在VS2008中點選“專案”,再點選“屬性”,依次展開“配置屬性”-->“連結器”-->“輸入”在“附加依賴項中”新增如下靜態檔案。

opencv_calib3d231d.lib opencv_contrib231d.lib opencv_core231d.lib opencv_features2d231d.lib opencv_flann231d.lib opencv_gpu231d.lib opencv_highgui231d.lib opencv_imgproc231d.lib opencv_legacy231d.lib opencv_ml231d.lib opencv_objdetect231d.lib opencv_ts231d.lib opencv_video231d.lib

再編譯,成功。程式執行結果如下圖所示:

呵呵,很酷的衝浪~~

下面列出OpenCV入門指南目錄,方便大家檢視。

14.《【OpenCV入門指南】第十四篇  Haartraining》即將釋出