本來OpenCV環境配置的問題是個基礎問題,但是步驟有點小煩,所以幾乎每次都要百度一下,加上這次遇到的“fatal error LNK1112: 模塊計算機類型“X86”與目標計算機類型“x64”沖突”的問題的解決,所幸寫一篇博客,以后還要配置環境,自己可以直接看。
首先來說OpenCV環境配置問題:
第一步:給OpenCV壓縮包解壓到一個磁盤中,任何磁盤都可以,我選擇解壓在C盤。
第二步:環境變量的配置,計算機—屬性—高級系統設置—環境變量
第三步:在系統變量當中找到Path,並且在path雙擊path,開啟編輯模式。在path當中添加OpenCV的相關路徑,根據文件解壓的位置做出相應的更改,比如我的就是:
C:\opencv\build\x86\vc11\bin C:\opencv\build\x64\vc11\bin 因為有時候會用到x64位編譯器,所以兩個都添加上。
第四步:打開VS2012新建一個工程,然后找到屬性管理器,點擊Debug欄目,右鍵添加新項目屬性表,並且進行相關命名,因為以后會反復用到這個東西,所以名字要特別一點。
第五步:雙擊新建的屬性表,添加相應的目錄。
通用屬性— VC++目錄 — 包含目錄: (根據解壓文件的位置)例如我的分別是:
C:\opencv\build\include
C:\opencv\build\include\opencv
C:\opencv\build\include\opencv2
然后是 庫目錄 也是根據解壓位置添加的:
C:\opencv\build\x86\vc11\lib
第六步: 添加附加依賴項:連接器——輸入——添加附加依賴項 ,然后將下面文件名放進去。
opencv_core2411d.lib
opencv_imgproc2411d.lib
opencv_highgui2411d.lib
opencv_ml2411d.lib
opencv_video2411d.lib
opencv_features2d2411d.lib
opencv_calib3d2411d.lib
opencv_objdetect2411d.lib
opencv_contrib2411d.lib
opencv_legacy2411d.lib
opencv_flann2411d.lib
好了,至此OpenCV環境已經配好了,可以用下面的代碼跑一下試試有沒有成功:
#include<opencv2\core\core.hpp> #include<opencv2\opencv.hpp> #include<opencv2\imgproc\imgproc.hpp> #include<opencv2\highgui\highgui.hpp> using namespace std; using namespace cv; int main(){ Mat img=imread("F:/2.jpg"); //圖片路徑 if(img.empty()){ return -1; } imshow("hehe",img); waitKey(0); return 0; }
Release模式和Debug模式差不多,只不過在添加附加依賴項的時候,將附件依賴項的文件名后面的“d”給去掉。
現在我們再討論一下fatal error LNK1112: 模塊計算機類型“X86”與目標計算機類型“x64”沖突問題的解決:即我們需要再64位環境下編譯運行,但是出現這個問題。
首先要確保這兩個地方沒有問題:
1:項目解決方案——屬性——連接器——高級——目標計算機,看目標計算機是否是MachineX64,不是的話更改為。
2:配置管理器——新建(有的話直接選擇)x64
這兩個搞定之后,試一試能不能跑,不能跑的話,我們回到剛剛設置建立的OpenCV屬性表當中,注意是修改DebugX64位下面的屬性表,將我們的庫目錄的路徑更改一下,
將原來的 C:\opencv\build\x86\vc11\lib 改為 C:\opencv\build\x64\vc11\lib,這樣基本就沒問題。Relaese方面一樣。
========================更新一下===============================================================
OpenCV 3 +VS2017 一個小問題:由於找不到opencv_world331d.dll,程度無法應用。
解決:將opencv_world331d.dll 拷貝到Windows/System32里面。