標籤:
OpenCV 3.0已於往年6月份宣布,新版本對本有API舉行了清算,經過引進T-API、IPP、NEON取得極大的機能晉陞,並變化為模組化布局。然而由於VS2015在其後發布,OpenCV 3.0安裝包提供了對VC11和VC12的支援而沒有VC14。如果使用VC12下的檔案,雖然可以編譯,但運行時會報錯“應用程式無法正常啟動0xc000007b”。於是乎在VS2015下只能自行編譯OpenCV 3.0方能使用。但這樣也有一個好處就是方便查看OpenCV的源碼。
編譯步驟
下面介紹編譯步驟:
1、分別下載並安裝:CMake3.5.1、OpenCV3.0、VS2015
a) CMake3.5.1:https://cmake.org/download/
b) OpenCVcontrib:https://github.com/Itseez/opencv_contrib
c) OpenCV:http://opencv.org/downloads.html
2、用CMake產生OpenCV的VS2015解決方案
(1) 點擊cmake-gui.exe,運行CMake;
(2) 點擊“Browse Source…”按鈕選擇原始碼路徑$(opencv_dir)/sources
;
(3) 點擊“Browse Build…”按鈕選擇產生路徑;
(4) 點擊Configure 在彈出的對話方塊中選擇產生項目版本和編譯器;
(5) 在紅色欄中勾選需要產生的項目及屬性;
如需編譯opencv_contrib
,則設定OPENCV_EXTRA_MODULE_PATH
的值為$(opencv_contrib_dir)/modules
,其中“$(opencv_contrib_dir)”
表示opencv_contrib
解壓路徑。
上邊是對應於編譯動態連結程式庫版本的,如果編譯靜態連結庫版本,需要取消BUILD_SHARE_LIBS
為了opencv的最終產生的庫打包成一個world,需要選擇BUILD_opencv_world
(6) 點擊Configure 完成後,點擊Generate 產生項目工程即可;
3、開啟opencv工程並編譯原始碼,產生我們所需要的動態連結程式庫
(1) 雙擊組建目錄下OpenCV.sln,開啟解決方案;
(2) 在方案總管視窗中選擇ALL_BUILD項目,右鍵進行“產生”;
(3) 從Debug模式切換到Release再次對項目進行產生;
產生的連結庫檔案分別在$(build_dir)/bin/Debug
和$(build_dir)/bin/Release
下。
4、配置Opencv環境變數
(1) 右擊“我的電腦”選擇依次“屬性”→“進階系統設定”→“環境變數”→”建立”進行編輯,在添加變數名“OPENCV”,變數值為“$(opencv_dir)\build”;
(2) 在環境變數path末尾添加產生的連結庫路徑;
(3) 登出或重啟系統使環境變數生效。
5、建立測試工程
(1) 在VS2015中建立空項目OpenCVDisplayImage
;
(2) 編輯 OpenCVDisplayImage.cpp
,並將圖片複製到項目目錄下;
#include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() { // 讀入一張圖片(遊戲原畫) Mat img=imread("pic.jpg"); // 建立一個名為 "遊戲原畫"視窗 namedWindow("遊戲原畫"); // 在視窗中顯示遊戲原畫 imshow("遊戲原畫",img); // 等待6000 ms後視窗自動關閉 waitKey(6000); }
(3) 配置包含目錄、庫目錄及附加依賴項;
在屬性管理員中雙擊Debug|Win32,選擇VC++目錄下的包含目錄,添加
$(OPENCV)\include;$(OPENCV)\include\opencv;$(OPENCV)\include\opencv2;
庫目錄,添加
$(OPENCV)\x86\vc14\lib\Debug;$(OPENCV)\x86\vc14\3rdparty\lib\Debug;
連結器->輸入->附加依賴項處添加:
opencv_ts300d.lib;opencv_world300d.lib;
對於Release同理,雙擊Release”Win32,選擇包含目錄,添加
$(OPENCV)\include;$(OPENCV)\include\opencv;$(OPENCV)\include\opencv2;
庫目錄,添加
$(OPENCV)\x86\vc14\lib\Release;$(OPENCV)\x86\vc14\3rdparty\lib\Release;
(4) 產生項目並運行,結果如所示。
編譯過程中的問題
下面介紹編譯步驟:
1、CMake Error at 3rdparty/ippicv/downloader.cmake
CMake Error at 3rdparty/ippicv/downloader.cmake:75 (message): ICV: Failed to download ICV package: ippicv_windows_20141027.zip. Status=18;"Transferred a partial file"Call Stack (most recent call first): 3rdparty/ippicv/downloader.cmake:108 (_icv_downloader) cmake/OpenCVFindIPP.cmake:235 (include) cmake/OpenCVFindLibsPerf.cmake:12 (include) CMakeLists.txt:526 (include) Configuring incomplete, errors occurred!
解決辦法:
a) 手動下載ippicv_windows_20141027.zip
b) 將上面的ZIP檔案放在OpenCV的目錄下面,我的路徑是下面這個:
E:\develop\opencv\include\opencv-3.0.0-windows\sources\3rdparty\ippicv\downloads\windows-b59f865d1ba16e8c84124e19d78eec57
c) 開啟CMake,重新Configure產生工程檔案即可。
2、OpenCV 3.0編譯失敗
Visual Studio 2015編譯安裝OpenCV 3.0和opencv_contrib