VS2010中關於OpenCV 2.3.1開發環境配置及第一個OpenCV程序


1.在OpenCV中文網站(http://www.opencv.org.cn/index.php)上面下載OpenCV-2.3.1-win的安裝包。可以下載源碼編譯版,也可以下載安裝包,還有OpenCV的參考手冊。我這里下載了安裝包( OpenCV-2.3.1-win-superpack.exe 文件)。   2.下載完點擊安裝,設置安裝路徑(這里的安裝,更確切的說應該是解壓),解壓到C盤Program文件夾下面(個人習慣)。   3.簡單說明一下OpenCV目錄下各個文件是作用: 3rdparty 包含第三方庫的實現代碼,如zlib,ffmpeg,libjpeg等 android android開發相關文件 build 用於編譯程序的lib文件和運行exe的dll文件 data 數據文件,如機器學習輸出的xml文件 doc 幫助文檔 include 頭文件 modules opencv中各模塊的源文件 samples 示例代碼   4.告訴程序如何加載dll文件以下三種方法任意一種都是可以的,根據情況任選其一:1)配置環境變量:右擊“我的電腦”-“屬性”-“高級系統設置”-“環境變量”,在系統環境變量中點擊“新建”,輸入“OpenCV_Path”和“C:\Program Files\opencv\build\x86\vc10\bin”,然后再PATH中增加“;%OpenCV_Path%”;配置完后記得要重啟電腦或者注銷登錄,配置才生效!b) 拷貝到系統目錄:將對應dll拷貝到c:\windows\system32目錄下;c)拷貝到程序運行目錄:將dll拷貝到debug或release等exe輸出目錄下。 5.配置VS2010中的參數:新建一個Win32控制台空項目。以前配置VC++6.0、VS2005、VS2008都是在“工具”->“選項”->“項目與解決方案”->“VC++ 目錄”中一次性配置好就可以了。但是到了VS2010后,當你按照前面的這個步驟操作時,會發現有提示“VC++目錄編輯功能已被否決”。上網搜了許久,發現以下方法較好,一次性配置即可。選擇“視圖”-“屬性管理器”,雙擊Debug | Win32下的“Microsoft.Cpp.Win32.user”,如下圖所示。經過測試,VC2010是可以在SolutionExporer上面的右鍵項目選擇屬性修改一下配置的。在彈出的配置框中配置,選擇“VC++目錄”(VC++Directories)。1)、在“包含目錄”(IncludeDirectories)中的結尾處(若結尾處無英文狀態下的“;”則需自行添加“;”,下同)加入以下內容添加以下內容:C:\Program Files\OpenCV\opencv\build\include\opencv;C:\Program Files\OpenCV\opencv\build\include\opencv2;C:\Program Files\OpenCV\opencv\build\include;2)、在庫目錄和可執行文件目錄(LibraryDirectories)中的結尾處加入以下內容添加:C:\Program Files\OpenCV\opencv\build\x86\vc10\lib;如下圖所示。3)、在“鏈接器”-“輸入”-“附加依賴選項”("Linker"->"Input"->"AdditionalDependencies")中的結尾處加入.lib運行庫文件。注:lib可根據實際情況進行刪減。針對debug配置添加以下庫:(注意,我這里使用的是OpenCV-2.3.1-win的安裝包,故opencv版本后綴有“3d231”,如果版本不同,應注意修改)opencv_calib3d231d.libopencv_contrib231d.libopencv_core231d.libopencv_features2d231d.libopencv_flann231d.libopencv_gpu231d.libopencv_highgui231d.libopencv_imgproc231d.libopencv_legacy231d.libopencv_ml231d.libopencv_objdetect231d.libopencv_ts231d.libopencv_video231d.lib如果是release配置(以后再說,只需要添加上面的debug配置就行了現在),則添加:opencv_calib3d231.libopencv_contrib231.libopencv_core231.libopencv_features2d231.libopencv_flann231.libopencv_gpu231.libopencv_highgui231.libopencv_imgproc231.libopencv_legacy231.libopencv_ml231.libopencv_objdetect231.libopencv_ts231.libopencv_video231.lib6.測試文件: //把一張名為“pp.jpg”的照片放在工程目錄下,編譯運行后出現照片。[cpp] view plaincopyprint?
  1. #include <opencv2\opencv.hpp>   
  2. #include <iostream>   
  3. #include <string>   
  4. using namespace cv;  
  5. using namespace std;  
  6. int main()  
  7. {  
  8. Mat img = imread("pp.jpg");  
  9. if(img.empty())  
  10. {  
  11. cout<<"error";  
  12. return -1;  
  13. }  
  14. imshow("xx的靚照",img);  
  15. waitKey();  
  16. return 0;  
  17. }  

//調用攝像頭,如果成功運行,將顯示出攝像頭的視頻。若不成功,嘗試將以下語句中的“1”,改成-1,0或2 CvCapture* capture = cvCaptureFromCAM(1);[cpp] view plaincopyprint?
  1. #include "stdafx.h"   
  2. #include <highgui.h>   
  3. int _tmain(int argc, _TCHAR* argv[])  
  4. {  
  5. int c;  
  6. // allocate memory for an image   
  7. IplImage *img;  
  8. // capture from video device #1   
  9. CvCapture* capture = cvCaptureFromCAM(1);  
  10. // create a window to display the images   
  11. cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);  
  12. // position the window   
  13. cvMoveWindow("mainWin", 5, 5);  
  14. while(1)  
  15. {  
  16. // retrieve the captured frame   
  17. img=cvQueryFrame(capture);  
  18. // show the image in the window   
  19. cvShowImage("mainWin", img );  
  20. // wait 10 ms for a key to be pressed   
  21. c=cvWaitKey(10);  
  22. // escape key terminates program   
  23. if(c == 27)  
  24. break;  
  25. }  
  26. return 0;  
  27. }  

7.opencv配置好后運行出現錯誤:"計算機中丟失opencv_core231d.dll" 等dll文件的解決方案 :(1)、注銷或重啟計算機,使得系統環境變量中的path生效;(2)、通過path中設置的路徑去尋找對應的dll文件,查看是否存在,是否被成功引用到VS中;(3)、通過文件搜索功能,找到運行時提示的那個dll文件所在路徑,並查看path的設置是否符合;(4)、拷貝這個dll文件到VS工程目錄下的debug和release目錄中;(5)、對比一下配置中的dll文件名是否和目錄中的文件名對應,這里通常會出現因不同版本導致的不同文件名而配置時,卻通過復制粘貼網上攻略導致一些錯誤的產生。例如:opencv 2.3.0版本的dll文件名應該是opencv_core230d.dll,而opencv2.3.1版本的dll文件名是opencv_core231d.dll,以此類推。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com