每次換電腦配置的時候都要去搜博客太麻煩了,干脆自己從頭到尾記錄一遍。
【本地環境】
系統:Windows10
IDE:Visual Studio 2022
【OpenCV版本】
opencv 3.4.16
opencv contrib3.4.16
1.配置前准備
(1)安裝VS
一般都是在VS里寫代碼,網上博客也都是基於VS的,為了配置的速度以及方便查找問題,建議安裝VS。VS的版本不重要,可以直接下載最新的。
(2)安裝Cmake
Cmake主要用於編譯contirb的代碼。
(3)安裝OpenCV3
我下載的版本是3.4.16,去官網下載即可,有.exe安裝包,下載完直接安裝到本地。建議直接在D盤下新建一個opencv目錄安裝本體和拓展的環境。
(4)下載contrib源碼
一定要和opencv版本一致。下載好之后解壓到和opencv一起的目錄。
2.編譯opencv contrib
詳情可以參考這一篇博客:https://blog.csdn.net/weijifen000/article/details/93377143
主要步驟如下:
(1)在你安裝的opencv根目錄下新建一個“new_build”文件夾,用於存放cmake編譯輸出。
(2)打開cmake,選擇好opencv/sources源碼目錄,和編譯輸出目錄,即上面的new_build文件夾。
(3)點擊configure,彈出默認選擇VS。下方顯示configuration done。在generate之前要確保不報紅,可以反復點configure,有可能會因為網絡環境下載不到部分的包,報出的錯誤一定要去搜索解決,然后再到下一步。
(4)點擊generate,等待完成。
(5)在new_build文件夾下,用VS打開OpenCV.sln解決方案。
(6)注意編譯器設置的模式,我是DebugX64。
(7)右鍵項目生成解決方案。要等待一會。
(8)CMakeTargets->INSTALL 右鍵僅用於項目->僅生成INSTALL。
(9)編譯完成后,輸出的依賴都在下面的目錄里。下面准備在項目里做配置。
3.開始配置
在VS里新建一個空C++項目,開始配置。配置中保存一個屬性表,下次新建項目時直接導入就可以完成配置。
詳細可以參考這篇博客:https://blog.csdn.net/ivan_9/article/details/114490508
3.1配置環境變量
在環境變量path里新建opencv和contrib的目錄。我的如下:
下面的是contrib的目錄。我在自己安裝的opencv下新建了install目錄存放編譯輸出。
3.2配置環境
打開屬性窗口。
添加新項目屬性表。把屬性表保存到一個容易找的位置,以后新建opencv項目只要載入這個屬性表就行。
打開屬性頁。
VC++->包含目錄,添加include目錄。這是我的:
D:\openCV\opencv\build\include
D:\openCV\opencv\build\include\opencv
D:\openCV\opencv\build\include\opencv2
上面是opencv的部分,下面是contirb的部分:
D:\openCV\opencv\install\install\include
D:\openCV\opencv\install\install\include\opencv
D:\openCV\opencv\install\install\include\opencv2
添加庫目錄。這是我的:
D:\openCV\opencv\build\x64\vc15\lib
contrib的部分:
D:\openCV\opencv\install\install\x64\vc17\lib
鏈接器->輸出->附加依賴項。添加依賴項。
opencv的部分(帶d后綴的是debug模式):
opencv_world3416d.lib
contrib的部分比較多,先進入到contirb依賴所在的目錄。
因為要復制所有文件名,寫一個批處理文件來完成。在該目錄下新建一個list.txt,在里面寫入:
DIR *.* /B >LIST.TXT
修改后綴名,保存為list.bat文件。雙擊,腳本執行完在本地輸出一個list.txt。打開后里面有所有依賴的文件名。
我的是這些:
opencv_aruco3416d.lib
opencv_bgsegm3416d.lib
opencv_bioinspired3416d.lib
opencv_calib3d3416d.lib
opencv_ccalib3416d.lib
opencv_core3416d.lib
opencv_datasets3416d.lib
opencv_dnn3416d.lib
opencv_dnn_objdetect3416d.lib
opencv_dpm3416d.lib
opencv_face3416d.lib
opencv_features2d3416d.lib
opencv_flann3416d.lib
opencv_fuzzy3416d.lib
opencv_hdf3416d.lib
opencv_hfs3416d.lib
opencv_highgui3416d.lib
opencv_imgcodecs3416d.lib
opencv_imgproc3416d.lib
opencv_img_hash3416d.lib
opencv_line_descriptor3416d.lib
opencv_ml3416d.lib
opencv_objdetect3416d.lib
opencv_optflow3416d.lib
opencv_phase_unwrapping3416d.lib
opencv_photo3416d.lib
opencv_plot3416d.lib
opencv_reg3416d.lib
opencv_rgbd3416d.lib
opencv_saliency3416d.lib
opencv_shape3416d.lib
opencv_stereo3416d.lib
opencv_stitching3416d.lib
opencv_structured_light3416d.lib
opencv_superres3416d.lib
opencv_surface_matching3416d.lib
opencv_text3416d.lib
opencv_tracking3416d.lib
opencv_video3416d.lib
opencv_videoio3416d.lib
opencv_videostab3416d.lib
opencv_xfeatures2d3416d.lib
opencv_ximgproc3416d.lib
opencv_xobjdetect3416d.lib
opencv_xphoto3416d.lib
4.測試環境
隨便找一段代碼測試一下。
5.保存屬性表
下次新建其它openCV項目,添加現有屬性表,選擇這個即可。