win10X64 + vs2015通過Cmake編譯Opencv(一)
寫在前面的話:
為什麼需要使用Cmake編譯安裝?在我目前的印象中主要有兩個原因:一是能夠看OpenCV的原始碼;而是能夠生成能在沒有opencv環境的電腦系統下執行的可執行檔案。同時建議大家先看看第七點,也就是我在編譯安裝過程中遇到過什麼錯誤,是什麼原因造成的之後再開始編譯安裝,這樣能避免重複我的錯誤
1.安裝vs2015
我的VS2015是中文專業版,修改了路徑,直接預設安裝;之後在網上找了一個祕鑰解除30天的試用期的限制。
2.解壓OpenCV3.1.0
直接執行.exe檔案即可,將解壓的資料夾放在自己想要的目錄中。解壓結果是一個名為opencv的資料夾,內容如下:
3.安裝Cmake
到這裡下載Cmake檔案,下載cmake-3.6.1-win64-x64.msi安裝(版本不對會出錯,詳情見後文,這裡截圖都是用我最開始錯誤版本的截圖)。
4.Cmake編譯Opencv
執行cmake軟體,制定source code路徑為OpenCV解壓所得的sources資料夾路徑,在選定生成路徑,如下圖:
點選configure,選定編譯器為Visual Studio 14 2015,點選finish。
如果沒有錯誤的話,會出現configure done,忘了截圖
手動勾選兩項內容:
BUILD_EXAMPLES
BUILD_opencv_world
再次點選Configure,又會出現configure done,結果如下:
再點選generate,生產sln工程
5.開啟OpenCV.sln工程
開啟生產的sln工程,如下圖:
點選生產->批生成,選擇如下:
注意:不要勾選ALL_BUILD對應的兩項,這是我首次嘗試的時候勾選的,失敗了。成功的那次沒有勾選
結果如下:
6.配置
1.設定環境變數
右擊 我的電腦->屬性->高階系統設定->環境變數->系統變數->編輯Path->新建, 新增路徑:D:\OpenCV3.1.0\opencv\cbuild\install\x64\vc14\bin
2.配置vs2015
新建一個控制檯應用程式,勾選空專案。(用vs新建工程預設不截圖了。。。)
在 屬性管理器->Debug | x64->Microsoft.Cpp.x64.user 上 右鍵->屬性 開啟屬性頁
C/C++–> 常規 –> 附加包目錄,新增
連結器—>附加庫目錄
連結器—>輸入
注意帶d和不帶d的順序,應該會有影響
7.測試
在該工程的cpp檔案中新增如下程式碼
#include <opencv2\opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
Mat img = imread("test.jpg");
imshow("img", img);
waitKey(0);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
相應路徑下有名為test.jpg的圖片
執行(有可能需要重啟)
結果如下:
8.錯誤總結
錯誤一:vs2015模組不全
如果vs安裝有問題,就會出現如下錯誤:
Error in configuration process, project files may be invalid.
No CMAKE_CXX_COMPILER could be found.
錯誤提示為沒有找到相應的編譯器,這是由於vs2015相應模組沒有安裝的問題,點選新建專案,在已安裝模組的Visual C++下吧相應的模組安裝完畢就能解決這個錯誤
錯誤二:缺少一些檔案
再次出現如下錯誤:
這是由於cmake時需要下載opencv_ffmpeg_64.dll,opencv_ffmpeg.dll以及ippicv_windows_20151201.zip,但是自動下載會出錯。所以需要先下好,放到相應的位置。檔案下載在這裡,裡面有使用方法
錯誤三:camke版本問題
我最開始下載的目前最新的版本cmake-3.7.0-rc3-win64-x64.msi。Cmake能夠通過,但是開啟Opencv.sln之後批生成是無法成功的,錯誤如下