現網上有大量VS+opencv配置方法,而且方法基本都是只需第一次配置,以后無需重新配置。一次配置就一勞永逸的優勢很明顯,但也有一個很不方便的缺陷所在:假如你按照這樣的方法配置了VS+opencv3,使用過程中感覺:“哇塞,opencv3大量的module用起來好爽,硬件加速用起來好快啊?。 ?,然而當你碰到難題需要上網求助,網上搜到大牛放出的代碼超級完美的時候,卻發現大牛用opencv2編寫的程序你無法運行。作為剛入門的小白改編成opencv3又有些許困難.這是你想起來可以自己配置環境嘛,于是下載opencv2進行配置,duang.duang.duang配置一通....結果失敗了。而且opencv3竟然也不能再用了?。?! 上邊其實是我初期遇到的問題,之后各種重裝。。。心累。 下邊介紹的方法:每次都需要重新配置項目,但優勢在一個穩定??!opencv2和opencv3各種版本隨便切換~~
…………………………………………………………正文分割線…………………………………………………………………
1. Visual studio 2015下載安裝,
C盤容量不吃緊的話建議默認安裝位置,畢竟速度快一點。
(要用到opencv)組件選擇:vc++ 和visual studio2015updata(其他有需要后期再安裝)
2.下載opencvSDK:
a. opencv2和opencv3官網下載地址如下:
opencv2410:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.10/opencv-2.4.10.exe/download
opencv310 : https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download
b. opencv安裝即解壓,解壓到合適的硬盤里。
3.環境配置:
其他方法中的系統環境變量設置在此不需要。直接進行配置。
a. 新建win32控制臺應用程序,選擇空項目,并先創建一個.cpp源文件
b. 右鍵項目-->屬性:
i). c/c++ -->附加包含目錄:opencv文件/build/include(這一步操作中使用opencv2或opencv3,文件夾名稱都一樣)
ii). 鏈接器-->常規-->附加庫目錄:opencv2文件/build/x86/vc12/lib(若使用opencv3文件/build/x64/vc14/lib)
iii). Link-->輸入-->附加依賴項(附加依賴項貼到教程最后opencv2和opencv3附加依賴項不一樣,debug和release模式也不一樣),最后點擊:應用,確定
iv). 將opencv2和opencv3如下文件夾中的所有文件拷貝到文件夾C/windows/system32和C/windows/sysWOW64中 :
opencv2文件夾下的build/x86/vc12/bin 和?
opencv3文件夾下的build/x64/vc14/bin
4.解決方案平臺選擇(如圖):
當使用opencv2需要選擇x86,
當使用opencv3需要選擇x64,
如果不匹配會出現如下錯誤:或者“模塊計算機類型X86與目標計算機類型X64沖突”
5.缺失文件下載:
配置完成后第一次測試代碼可能會出現某.lib后綴文件不存在(2017.11.27更新:重裝系統后第一次配置opencv的時候終于記下了名字),出現這個問題的時候從網上搜索此lib后綴文件并下載放入opencv的lib庫文件夾下,建議C/windows/system32和C/windows/sysWOW64中也復制進去,即可運行。
...................................................................................................................................................
以上完成以后,就能歡樂的使用opencv了,下次新建項目按需求重復3,4步,選擇合適的文件夾即可。雖然每次新建項目都要多花費一分鐘,但是好在opencv2與opencv3切換使用無壓力不是嘛?。?!
最后附上附加依賴項和測試代碼:
附加依賴項:
(opencv2410,debug版)................................................................................................
opencv_ml2410d.lib
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib
(opencv2410,release版)................................................................................................
opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_nonfree2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_videostab2410.lib
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
(opencv310,debug版)................................................................................................
opencv_ts310d.lib??
opencv_world310d.lib
(opencv310,release版)................................................................................................
opencv_ts310.lib??
opencv_world310.lib
測試代碼(opencv310,debug模式)...................................................................................
#includeusing namespace cv;
void main()
{
Mat im;
im = imread("xj.jpg");
imshow("OpenCV310", im);
std::cout << "-------------------" << std::endl
<< "OpenCV310 Success!!" << std::endl
<< "-------------------" << std::endl;
waitKey(0);
}