1. 程式人生 > >Win7 64位 + VS2015 +Opencv3.3.0重編譯

Win7 64位 + VS2015 +Opencv3.3.0重編譯

Win7x64 + VS2015 + Opencv3.3.0重編譯

一、下載安裝

這裡寫圖片描述

這裡寫圖片描述

二、重編譯

1、用CMake生成VS2015的OpenCV工程

第一步:開啟CMake解壓後的資料夾,在目錄D:\cmake-3.8.2-win64-x64\bin下雙擊cmake-gui.exe;

這裡寫圖片描述

第二步:在彈出的CMake窗口裡,輸入Opencv原始碼所在路徑;

第三步:在D盤目錄下建立新資料夾MyOpenCV,用於生成的OpenCV工程存放目錄,如果不建立,好像在Configure後會彈出錯誤框,提示“Error inconfiguration process, project files may be invalid”;

第四步:點選“Configure”按鈕;

這裡寫圖片描述

第五步:在彈出的對話方塊中選擇編譯器Visual Studio 14 2015(這裡需要注意的是該編譯器生成的是x86的檔案,如果編譯64位dll應該選擇64位的,我這裡選成了32位的(無意的,當時選的時候不知道這些),不過後面看網上說一般都用32位的編譯器,32位和64位後面操作應該差不多);

按照上述設定後,點選“Finish”後就開始執行第一次生成。可能我的網速比較慢,別人說2min就好了,我整個過程下來,都看了兩集《老友記》了。

這裡寫圖片描述

第一次生成後

這裡寫圖片描述

第六步:第一次“Configure”生成之後,但還需要第二次執行生成,再次單擊“Configure”按鈕,執行第二次生成;

第七步:經過兩次“Configure”之後,點選“Generate”按鈕生成最終的OpenCv解決方案。退出Cmake。

這裡寫圖片描述

2、用VS2015編譯生成自己Opencv庫

第一步:生成後在自己建立的資料夾MyOpenCV下檢視生成的專案,雙擊開啟工程OpenCV.sln;

這裡寫圖片描述

第二步:在CmakeTargets下選擇ALL_BUILD,右鍵單擊生成;
第三步:在CmakeTargets下選擇INSTALL,右鍵單擊生成;

這裡寫圖片描述

第四步:生成好後,開啟MyOpenCV資料夾,將install資料夾拷貝到D:\opencv下,並將install重新命名為vc14x86。此時D:\MyOpenCV沒用了,但不能刪除,否則無法跟蹤原始碼,網上說可以通過“清理解決方案”來減小,我還沒有嘗試。

這裡寫圖片描述

將install資料夾拷貝到D:\opencv下,並重命名為vc14x86。

這裡寫圖片描述

三、配置環境

1、環境變數配置

右擊計算機->屬性->高階系統設定->高階->環境變數,找到系統變數中的path,點選編輯,新增路徑 :

D:\opencv\vc14x86\x86\vc14\bin

這裡寫圖片描述

2、VS2015中配置

第一步:新增好環境變數後,開啟VS2015,新建一個空的C++win32控制檯工程,並在原始檔中新增一個cpp檔案,比如:main.cpp;

第二步:開啟選單欄中檢視->其他視窗->屬性視窗,在屬性管理器列表中選擇Debug|Win32 -> Microsoft.Cpp.Win32.user,右鍵點選屬性(注意如果之前生成的是x64的,應選擇Debug|x64)對屬性進行配置;

這裡寫圖片描述

第三步:通用屬性 -> VC++目錄 ->包含目錄中新增

D:\opencv\vc14x86\include

D:\opencv\vc14x86\include\opencv

D:\opencv\vc14x86\include\opencv2

這裡寫圖片描述

第四步:通用屬性 -> VC++ 目錄 -> 庫目錄中新增

D:\opencv\vc14x86\x86\vc14\lib

這裡寫圖片描述
第五步:通用屬性 -> 連結器 -> 輸入 -> 附加依賴項中新增

opencv_calib3d330d.lib

opencv_core330d.lib

opencv_dnn330d.lib

opencv_features2d330d.lib

opencv_flann330d.lib

opencv_highgui330d.lib

opencv_imgcodecs330d.lib

opencv_imgproc330d.lib

opencv_ml330d.lib

opencv_objdetect330d.lib

opencv_photo330d.lib

opencv_shape330d.lib

opencv_stitching330d.lib

opencv_superres330d.lib

opencv_video330d.lib

opencv_videoio330d.lib

opencv_videostab330d.lib

這裡寫圖片描述

四、測試

在main.cpp中編寫如下程式碼:

這裡寫圖片描述

設定斷點,進入imread函式:

這裡寫圖片描述

五、配置過程中出現的錯誤

1、錯誤一

錯誤一:第一次點選Configure後出現錯誤提示:“Error in configuration process, project files may be invalid ”

解決方法:在D盤目錄下建立新的資料夾MyOpenCV。

這裡寫圖片描述

2、錯誤二

錯誤二:在錯誤一解決後再點選Configure時出現下列錯誤提示:“CMake Error at CMakeLists.txt:127 (Project): No CMAKE_CXX_COMPILER could be found”。

這是因為預設的編譯器是Visual Studio 15 2017, 網上說cmake會自動選擇本機已經安裝的目標編譯器,我就沒有改,但點選“finish”後,彈出錯誤。

解決方法:更改預設的目標編譯器,首先點選CMake左上角的File->Delete Cache,把之前選擇的清除掉再重新選擇。VS2015對應vc14,應該選Visual Studio 14 2015(這裡需要注意下,這個版本生成的是x86,網上很多說這個問題的,但當時我也沒特別注意,就選的這個編譯器。記得有個Visual Studio 14 2015 x64,忘了具體是什麼名稱,記得有個64,選擇那個編譯器生成的應該是x64。不過也沒關係,生成x86也一樣用)

這裡寫圖片描述

3、錯誤三

錯誤三:按照別人的參考文章,雙擊OpenCV.sln後直接F5編譯,會彈出這個錯誤提示:無法啟動程式:“D:\MyOpenCV\Debug\ALL_BUILD”,系統找不到指定的檔案。

解決方法:點選確定,在CmakeTargets下選擇ALL_BUILD,右鍵單擊生成,再選擇INSTALL,右鍵單擊生成(具體參考上文步驟)

這裡寫圖片描述

4、錯誤四

錯誤四:彈出如下錯誤提示:“原始檔與模組生成時的檔案不同。是否希望偵錯程式使用它?”

這裡應該是我之前選的都是x64,最後生成的是x86的。

解決方法:點選“是”。

這裡寫圖片描述