OpenCV3.4.2+VS2015安裝配置詳細過程
環境配置
本文是OpenCV3.4.2 在VS2015下的配置過程,用的是WIN10系統
基於opencv的配置有兩種
一是靜態的配置
二是用CMake的動態連結庫配置
OpenCV3.4.2官方下載 8月29日已更新至3.4.2版本
VS2015自行下載
二1:opencv下載安裝
進入OpenCV的官網,選擇3.4.2的Sources版本進行下載,
二2:CMake下載安裝
得到如下檔案,其中1(OpenCV_VS2013_x64)是另外建立的資料夾,用於存放CMake生成的目標解決方案
開啟CMake,新增原始碼和目標資料夾路徑
開啟已安裝好的CMake軟體
(1)新增解壓出的OpenCV-3.4.2資料夾絕對路徑(比如,我的絕對路徑是D:/OpenCV/opencv-3.4.2),
(2)新增自定義建立的OpenCV-3.3.0build的空資料夾,這裡資料夾名稱為“OpenCV3.3_VS2015_x64”,因為OpenCV版本是3.4,編譯器是VS2015,並且打算生成x64位的解決方案(比如,我的絕對路徑是D:/OpenCV/opencv_VS2015_x64)
Configure,配置相應庫
點選Finish,CMake開始對OpenCV原始碼進行配置生成並下載相應函式庫,如ffmpeg,IPP等(此時需要等待若干分鐘)
當第一次Configure後,介面會出現紅色部分,這是為了讓使用者可以手動補充相應函式庫,如TBB、CUDA、Eigen等,這裡視你的需求而定,若需要其他庫,請自行下載相應庫,並自行配置庫的include和lib
第一次配置OpenCV3.3,怕出現一些不必要的版本相容問題,所以沒有額外新增庫,並且這裡將CUDA的選項也登出了,即取消勾選WITH的WITH_CUDA(第一次最好不要配置CUDA版本的OpenCV3.4.2,因為較複雜,若配置無CUDA版本的OpenCV3.3成功後,可以再配置CUDA版的)
再次點選Configure,確保紅色畫面消失,如果紅色畫面一直未消失,請檢查WITH選項,是否勾選了不必要的庫
二3:在VS中Install
(1) 當多次Configure後(一般只需要2次),紅色介面完全消失,並出現Configuring done的提示。
(2) 此時請點選Generate按鈕,生成相應的解決方案,若出現Generating done的提示,即表明解決方案生成成功。
(3) 繼續點選Open Project。此時CMake會自行啟動Visual studio 2015軟體,開啟上述生成的解決方案
二4:配置環境變數
在Visual studio 2015出現已上述生成的解決方案,進行debug和Release下的配置
Debug
(1) 右擊All_BUILD,選擇生成 。此時需要等待---時間視網速而定,
(2) 生成完成後,右擊INSTALL,選擇生成(會在自定義建立的OpenCV資料夾下生成一個install資料夾,包含了include和bin)
上述過程完成後,生成的是Debug版的動態連結庫,此時還需要在Release下進行生成
Release
換成release模式,與上述Debug步驟一致
1) 右擊All_BUILD,選擇生成 。此時需要等待很長時間,大概半個小時
(2) 生成完成後,右擊INSTALL,選擇生成
自動生成的install資料夾
二5:配置OpenCV3.4.2動態連結庫
若要呼叫OpenCV3.4.2需要將bin絕對路徑,新增到系統環境變數中
我的bin絕對路徑為D:\OpenCV\OpenCV3.3\OpenCV3.3_VS2013_x64\install\x64\vc12\bin,如下圖所示,該資料夾下有很多dll檔案,其中帶d的表示Debug版,不帶d的表示Release版。配置動態連結庫就是讓VS可以找到opencv的二進位制檔案,dll檔案
將bin絕對路徑,新增到系統環境變數中,如何找到“編譯環境變數”,可以自行百度或者參考下述介面來尋找
二6:檢測示例
寫一段測試程式碼來檢驗是否配置成功
(1) 建立新的Visual Studio工程
(2)配置工程
因為上述生成的是Visual Studio2015 x64的動態連結庫,不適用於x86的工程,所以需要配置x64的工程,操作如下
在屬性管理器中,新增新專案屬性頁,如選中並右擊,再選擇“新專案屬性頁”
Debug
這裡將新建的屬性頁命名為:OpenCV3.4.2_VS2015_Debug_x64
(a) include,為屬性頁的包含目錄新增include路徑,此時需要新增三個路徑,即x64資料夾下的include及其子資料夾的絕對路徑
D:\OpenCV\OpenCV3.3\OpenCV3.3_VS2013_x64\install\include
D:\OpenCV\OpenCV3.3\OpenCV3.3_VS2013_x64\install\include\opencv
D:\OpenCV\OpenCV3.3\OpenCV3.3_VS2013_x64\install\include\opencv2
(b) lib,為屬性頁的庫目錄新增lib路徑,即D:\OpenCV\OpenCV3.4\OpenCV3.3_VS2013_x64\install\x64\vc12\lib
並需要在屬性頁--連結器--輸入--附加依賴項中新增庫的名稱
注意OpenCV3.3一共有17個動態連結庫,因為是現在新增的是Debug版本,所以後綴帶d(只需要將下述17個檔名Copy一下)
opencv_calib3d342d.lib
opencv_core342d.lib
opencv_dnn342d.lib
opencv_features2d342d.lib
opencv_flann342d.lib
opencv_highgui342d.lib
opencv_imgcodecs342d.lib
opencv_imgproc342d.lib
opencv_ml342d.lib
opencv_objdetect342d.lib
opencv_photo342d.lib
opencv_shape342d.lib
opencv_stitching342d.lib
opencv_superres342d.lib
opencv_video342d.lib
opencv_videoio342d.lib
opencv_videostab342d.lib
(c) bin,因為之前已經在系統環境變數中添加了bin資料夾路徑,所以不需要再新增
Release
在屬性管理器中的Release|x64,新建一個屬性頁命名為:OpenCV3.3_VS2013_Release_x64
下述操作和Debug類似,但庫檔名稱不一致,因為不含d
(a) include,為屬性頁的包含目錄新增include路徑,此時需要新增三個路徑,即x64資料夾下的include及其子資料夾的絕對路徑
D:\OpenCV\opencv_VS2015_x64\install\include
D:\OpenCV\opencv_VS2015_x64\install\include\opencv
D:\OpenCV\opencv_VS2015_x64\install\include\opencv2
(b) lib,為屬性頁的庫目錄新增lib路徑,即D:\OpenCV\opencv_VS2015_x64\install\x64\vc14\lib
並需要在屬性頁--連結器--輸入--附加依賴項中新增庫的名稱
注意OpenCV3.4.2一共有17個動態連結庫,因為是現在新增的是Release版本,所以後綴無d(只需要將下述檔名Copy一下)
opencv_calib3d342.lib
opencv_core342.lib
opencv_dnn342.lib
opencv_features2d342.lib
opencv_flann342.lib
opencv_highgui342.lib
opencv_imgcodecs342.lib
opencv_imgproc342.lib
opencv_ml342.lib
opencv_objdetect342.lib
opencv_photo342.lib
opencv_shape342.lib
opencv_stitching342.lib
opencv_superres342.lib
opencv_video342.lib
opencv_videoio342.lib
opencv_videostab342.lib
OpenCV測試Demo
在寫程式碼前,先準備一張影象,儲存在工程目錄下,如xxx\OpenCV3.3\OpenCV3.3_TestDemo
在上述工程中新建demo.cpp檔案,新增下述程式碼
#include <opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
cout << "OpenCV Version: " << CV_VERSION << endl;
Mat img = imread("img.jpg");
imshow("img",img);
waitKey(0);
return 0;
}
執行結果
(1) 輸出OpenCV的版本號
(2) 顯示出輸入的影象
注: 分別在Debug和Release下執行,若都能正常執行,即表明OpenCV3.4.2配置成功
總結
(1) 上述只是實現了OpenCV的基本配置,並沒有配置CUDA和contrib