1. 程式人生 > >OpenCV3.3安裝教程

OpenCV3.3安裝教程

簡介

改變

  • 主要訊息是我們將DNN模組從opencv_contrib推廣到主儲存庫,改進和加速了很多。不再需要外部BLAS實現。對於GPU,使用Halide(http://halide-lang.org)進行實驗DNN加速。 有關該模組的詳細資訊可以在我們的wiki中找到:OpenCV中的深度學習
  • OpenCV現在可以使用標誌ENABLE_CXX11構建為C ++ 11庫。添加了C ++ 11程式設計師的一些很酷的功能。
  • 由於“動態排程”功能,我們還在OpenCV的預設版本中啟用了不少AVX / AVX2和SSE4.x優化。 DNN模組還具有一些AVX / AVX2優化。
  • Intel Media SDK現在可以被我們的videoio模組用來進行硬體加速的視訊編碼/解碼。支援MPEG1 / 2,以及H.264。
  • 嵌入OpenCV Intel IPP子集已從2015.12升級到2017.2版本,從而在我們的核心和imgproc perf測試中提高了15%的速度。
  • 716拉請求已經合併,588我們的錯誤跟蹤器中的問題已經關閉,因為OpenCV 3.2。 另外,我們通過一些嚴格的靜態分析儀工具執行OpenCV,並修復了檢測到的問題。 所以OpenCV 3.3應該是非常穩定和可靠的釋放。
有關OpenCV 3.3的更改和新功能的更多詳細資訊,請參見OpenCV改變日誌

環境

Windows10 x64
Visual Studio 2013

下載

CMake

進入OpenCV的發行版本官網,選擇3.3.0的Sources
版本進行下載(這裡我們打算CMake對OpenCV3.3原始碼進行生成VS2013的x64位解決方案sln)


安裝

1.解壓OpenCV3.3.0原始碼,並建立Build資料夾路徑

其中opencv-3.3.0是剛才下載opencv-3.3.0.zip解壓出來的資料夾,而OpenCV_VS2013_x64是自定義建立的資料夾,用於存放CMake生成的目標解決方案

2.開啟CMake,新增原始碼和目標資料夾路徑

開啟已安裝好的CMake軟體 (1)新增解壓出的OpenCV-3.3.0資料夾絕對路徑(比如,我的絕對路徑是D:\OpenCV\OpenCV3.3\opencv-3.3.0), (2)新增自定義建立的OpenCV-3.3.0build的空資料夾,這裡資料夾名稱為“OpenCV3.3_VS2013_x64”,因為OpenCV版本是3.3,編譯器是VS2013,並且打算生成x64位的解決方案(比如,我的絕對路徑是D:\OpenCV\OpenCV3.3\OpenCV3.3_VS2013_x64)

3. 多次Configure,配置相應庫

點選Configure按鈕後,會出現下述介面,選擇你所需要的編譯器和解決方案版本(這裡我選擇的是Visual Studio 12 2013 Win64
點選Finish,CMake開始對OpenCV原始碼進行配置生成並下載相應函式庫,如ffmpeg,IPP等(此時需要等待若干分鐘)
當第一次Configure後,介面會出現紅色部分,這是為了讓使用者可以手動補充相應函式庫,如TBB、CUDA、Eigen等,這裡視你的需求而定,若需要其他庫,請自行下載相應庫,並自行配置庫的include和lib
因為我是第一次配置OpenCV3.3,怕出現一些不必要的版本相容問題,所以沒有額外新增庫,並且這裡將CUDA的選項也登出了,即取消勾選WITH的WITH_CUDA(第一次最好不要配置CUDA版本的OpenCV3.3,因為較複雜,若配置無CUDA版本的OpenCV3.3成功後,可以再配置CUDA版的)
再次點選Configure,確保紅色畫面消失,如果紅色畫面一直未消失,請檢查WITH選項,是否勾選了不必要的庫

4.點選Generate,生成opencv解決方案

(1) 當多次Configure後(一般只需要2次),紅色介面完全消失,並出現Configuring done的提示。 (2) 此時請點選Generate按鈕,生成相應的解決方案,若出現Generating done的提示,即表明解決方案生成成功。 (3) 繼續點選Open Project。此時CMake會自行啟動Visual studio 2013軟體,開啟上述生成的解決方案

5.Build並Install opencv解決方案

此時Visual studio 2013軟體,已上述生成的解決方案opencv
Debug (1) 右擊All_BUILD,選擇生成 。此時需要等待很長時間,大概半個小時 (2) 生成完成後,右擊INSTALL,選擇生成(會在自定義建立的OpenCV資料夾下生成一個install資料夾,包含了include和bin) 上述過程完成後,生成的是Debug版的動態連結庫,此時還需要在Release下進行生成 Release 與上述Debug步驟一致 1) 右擊All_BUILD,選擇生成 。此時需要等待很長時間,大概半個小時 (2) 生成完成後,右擊INSTALL,選擇生成

右擊install生成
自動生成的install資料夾

配置OpenCV3.3動態連結庫

若要呼叫OpenCV3.3需要將bin絕對路徑,新增到系統環境變數中 此時我的bin絕對路徑為D:\OpenCV\OpenCV3.3\OpenCV3.3_VS2013_x64\install\x64\vc12\bin,如下圖所示,該資料夾下有很多dll檔案,其中帶d的表示Debug版,不帶d的表示Release版。
將bin絕對路徑,新增到系統環境變數中,如何找到“編譯環境變數”,可以自行百度或者參考下述介面來尋找

OpenCV3.3示例

此時已經配置好了OpenCV動態連結庫的環境。 為了需要檢驗OpenCV3.3是否配置成功,能否正常呼叫,我們建立新的VS專案,寫一段測試程式碼來檢驗。

(1) 建立新的Visual Studio工程



(2)配置工程

因為上述生成的是Visual Studio2013 x64的動態連結庫,不適用於x86的工程,所以需要配置x64的工程,操作如下
在屬性管理器中,新增新專案屬性頁,如選中並右擊,再選擇“新專案屬性頁” Debug
這裡將新建的屬性頁命名為:OpenCV3.3_VS2013_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.3\OpenCV3.3_VS2013_x64\install\x64\vc12\lib
並需要在屬性頁--連結器--輸入--附加依賴項中新增庫的名稱 注意OpenCV3.3一共有17個動態連結庫,因為是現在新增的是Debug版本,所以後綴帶d(只需要將下述17個檔名Copy一下)

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


(c) bin,因為之前已經在系統環境變數中添加了bin資料夾路徑,所以不需要再新增 Release 在屬性管理器中的Release|x64,新建一個屬性頁命名為:OpenCV3.3_VS2013_Release_x64


下述操作和Debug類似,但庫檔名稱不一致,因為不含d (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.3\OpenCV3.3_VS2013_x64\install\x64\vc12\lib

並需要在屬性頁--連結器--輸入--附加依賴項中新增庫的名稱 注意OpenCV3.3一共有17個動態連結庫,因為是現在新增的是Release版本,所以後綴無d(只需要將下述17個檔名Copy一下) opencv_calib3d330.lib
opencv_core330.lib
opencv_dnn330.lib
opencv_features2d330.lib
opencv_flann330.lib
opencv_highgui330.lib
opencv_imgcodecs330.lib
opencv_imgproc330.lib
opencv_ml330.lib
opencv_objdetect330.lib
opencv_photo330.lib
opencv_shape330.lib
opencv_stitching330.lib
opencv_superres330.lib
opencv_video330.lib
opencv_videoio330.lib
opencv_videostab330.lib

OpenCV測試Demo

在寫程式碼前,先準備一張影象,儲存在工程目錄下,如xxx\OpenCV3.3\OpenCV3.3_TestDemo

在上述工程中新建demo.cpp檔案,新增下述程式碼
  1. #include <opencv.hpp>
  2. #include <iostream>
  3. usingnamespace cv;  
  4. usingnamespace std;  
  5. int main()  
  6. {  
  7.     cout << "OpenCV Version: " << CV_VERSION << endl;  
  8.     Mat img = imread("img.jpg");  
  9.     imshow("img",img);  
  10.     waitKey(0);  
  11.     return 0;  
  12. }  

執行結果

(1) 輸出OpenCV的版本號 (2) 顯示出輸入的影象 注: 分別在Debug和Release下執行,若都能正常執行,即表明OpenCV3.3配置成功

總結

(1) 上述只是實現了OpenCV的基本配置,並沒有配置CUDA和contrib (2) OpenCV3.3有一個強大的地方,加入了DNN還有深度學習的相關模組,也表明現在的趨勢(AI時代) (3) 有了強大的工具,還不趕緊上手完成你的夢想,just do it~