目前(2017.11)OpenCV最新版本為3.3.1,提供了vc14(VS2015)的運行庫,但未提供VS2017的運行庫。要想在VS2017中使用,可以用CMake + VS2017重新編譯源代碼。
同時,OpenCV官方也只提供了Python2.7版本可以調用的庫,若想在python 3.6.3 中使用,則需要重新為python3編譯。
若需要在Qt或C#中使用可參考本人其他博客。
Step 1 安裝相關軟件
軟件安裝部分比較簡單,沒有什么需要特別注意的,因此不再贅述。
本文使用的系統及軟件版本(總之都是目前最新的):
說明:
OpenCV可以在Git下載源代碼,或在sourceforge下載文件解壓,只使用其中的sources。
CMake版本最好是最新的否則不支持VS2017。
Visual Studio安裝時必須選擇安裝VC。
Step 2 使用CMake生成項目文件
打開cmake-gui,選取sources和build的路徑(如build_vc15),點擊configure,若路徑不存在會提示創建。
彈出對話框,選擇IDE及平台,這里選擇Visual Studio 15 2017 Win64,下方Use default native compilers 保持不變,點擊finish。
之后CMake會自動尋找C/C++編譯器,並根據硬件情況等進行自動配置,期間會盡可能地尋找存在的第三方庫,比如:Ant、clAmdBlas、clAmdFft、CUDA、EIGEN、GLib、GStreamer、MKL、LAPACK、VTK …… 如果有需要,找不到的可以手動指定路徑。過程中會自動下載ffmpeg的庫文件,因此不聯網可能報錯。下方會生成General configuration for OpenCV 3.3.1信息,這就是首次自動配置的結果。
完成后中間出現大量紅色配置,除一些路徑配置之外,其中需要注意的幾個選項:
BUILD_opencv_world :將.lib或者.dll文件統一整合進一個world文件中,方便使用。但若想只使用一部分模塊可不勾選以減少體積。生成動態鏈接庫dll需要勾選BUILD_SHARED_LIBS 。
ENABLE_CXX11 :支持C++11特性
OPENCV_EXTRA_MODULES_PATH :若使用opencv_contrib模塊,則在此處填寫解壓后的路徑,如 …\opencv_contrib-3.3.1\modules\
BUILD_EXAMPLES :項目文件中會包含sample工程,按需勾選。
INSTALL_C_EXAMPLES :將在install文件夾中編譯出一些示例程序(但都是.exe,因此想參考最好還是看sources中的源代碼)
不建議勾選:
BUILD_DOCS :生成文檔,需要安裝Doxygen,文檔可在官網查看。
BUILD_opencv_ts :一些單元測試代碼,參考文章1 。
INSTALL_TESTS :與開發無關,參考文章1 。
BUILD_opencv_saliency :文章2 中指出win10下不能勾選,但實際上並未發現此項。
文章1 中還提供了很多模塊及項目的解釋,可根據自己需要修改。
修改之后再次點擊configure進行配置,紅色會消失。若有錯誤提示,則檢查是否勾選了某項而未添加路徑。
完成后點擊Generate,開始生成項目文件。
Python 3與OpenCV 3
OpenCV官方只提供了Python 2.7可以使用的庫文件.pyd(其他語言寫成的可以被python調用的擴展),若想在python 3.6.3 中使用,則需要重新為python3編譯。
若之前安裝過python3或Anaconda3,並將路徑添加進系統環境變量中過,CMake將會自動尋找到它們的路徑。否則需要手動添加路徑。
配置時與python有關的:
opencv_python :若CMake找到python3路徑則會自動勾選。
BUILD_opencv_python3 :若CMake找到python3路徑則會自動勾選。
INSTALL_PYTHON_EXAMPLES :在 …\install\samples\native\python 生成python示例,經比較與sources文件夾下示例相同,可不勾選。
想生成在python 3 下用的.pyd,保證python3路徑填寫無誤,並勾選上面的前兩項即可。
Step 3 編譯
很多教程在此步驟會打開VS進行項目的編譯,事實上這里有更便捷的辦法,並且若生成Python庫必須這樣做。
在生成項目的文件夾(如build_vc15)空白處,按住shift 的同時點擊鼠標右鍵,點擊“在此處打開powershell窗口”,鍵入如下命令:
Release模式:
cmake.exe --build . --config Release --target INSTALL
Debug模式:文章2 中指出debug模式需要去掉 INSTALL_PYTHON_EXAMPLES、BUILD_opencv_python3 和BUILD_opencv_python2 這三項的勾選,經測試若勾選會編譯失敗。
cmake.exe --build . --config Debug --target INSTALL
等待編譯完成即可。
Step 4 保留build路徑下有用的部分
本人編譯完成后得到的build_vc15文件夾大小高達7.24G,但其中大部分都是不需要的文件,有用的文件夾主要有兩個:
\build_vc15\install (218 MB),它的目錄結構如下:
install
├─etc
│ ├─haarcascades
│ └─lbpcascades
├─include
│ ├─opencv
│ └─opencv2
├─samples
│ └─native
│ └─python
└─x64
└─vc15
├─bin
├─lib
└─samples
其中:
/etc:訓練好的分類器,可以用在人臉識別等程序中
/include:opencv需要的頭文件
/samples:python的例程(.py),若勾選INSTALL_PYTHON_EXAMPLES會生成
/x64/vc15: 64位vc15所需的動態運行庫(bin)、靜態運行庫(lib)、及例程(samples, .exe)
\build_vc15\lib\python3\Release (3.72 MB):
此文件夾下為可在python 3中調用的pyd文件:cv2.cp36-win_amd64.pyd
因此,只要保留上述兩個路徑的文件即可保證opencv正常使用,其中的示例其實也可以刪除。
Step 5 項目配置
項目配置隨便一搜索就有大量的文章教程,這里就不再贅述了,與本文相關的幾點:
如果在VS項目中使用opencv,可以參考文章1中屬性表的配置,避免了為每一個工程配置屬性。使用動態鏈接庫DLL的話,將\build_vc15\install\x64\vc15\bin 加到系統環境變量PATH里,可以方便調試。
如果在Python中使用opencv,將之前的cv2.cp36-win_amd64.pyd改名為cv2.pyd ,再拷貝到Python目錄,比如我這里使用anaconda路徑為:D:\Anaconda3\Lib\site-packages 即可。使用時 import cv2 。
參考