http://blog.csdn.net/morewindows/article/details/8225783/
【OpenCV第一篇】安裝OpenCV
本篇主要介紹如何下載OpenCV安裝程序,如何在VS2008下安裝配置OpenCV,文章最后還介紹了一個使用OpenCV的簡單小例子。
《OpenCV入門指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764
一.OpenCV的下載
可以到http://www.opencv.org.cn/index.php/Download,然后選一個較新版本下載。我下的是V2.3.1版本,下載地址是:
http://www.opencv.org.cn/download/OpenCV-2.3.1-win-superpack.exe
下載完成后,雙擊運行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中點擊“工具”,再點擊“選項”,然后選擇“項目和解決方案”,手動加入庫文件,引用文件和包含文件即可完成OpenCV在VS2008的導入。
四.第一個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入門指南目錄,方便大家查看。
11.《【OpenCV入門指南】第十一篇鼠標繪圖》
12.《【OpenCV入門指南】第十二篇無法運行OpenCV程序?》
13.《【OpenCV入門指南】第十三篇人臉識別》
14.《【OpenCV入門指南】第十四篇 Haartraining》即將發布
轉載請標明出處,原文地址:http://blog.csdn.net/morewindows/article/details/8225783
《OpenCV入門指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764