1. 程式人生 > >OpenCV3.4.2+VS2015安裝配置詳細過程

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下載安裝

CMake-3.12.1官方下載

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