一、配置環境:VS2015+OpenCV4.1.1+OpenCV_contrib-4.1.1+CMake3.17.1
下載鏈接:
OpenCV:https://opencv.org/releases/
OpenCV_contrib:https://github.com/opencv/opencv_contrib/releases OpenCV_contrib版本必須要與OpenCV版本一致
CMake:https://cmake.org/download/
二、安裝步驟
2.1 CMake編譯
(1)先安裝OpenCV.exe,記住安裝路徑,盡量不要中文。
(2)安裝好之后一般是build和sources這兩個文件夾。
(3)在OpenCV安裝目錄下新建一個文件夾,用來保存編譯后的結果。如圖所示的webuild文件夾。
(4)--點擊Configure,選擇VS的版本Visual Studio 15 2015 ;第二個選擇X64位系統(根據自己系統來),曾在這翻車;然后點擊finish等待編譯;
Configuring Done 后如果出現紅色區域;勾選BUILD_opencv_world,BUILD_EXAMPLES(大體趨勢);
此外找到OPENCV_EXTRA_MODULES_PATH,添加路徑D:\Program Files\opencv_contrib-4.1.1\modules
然后據說OpenCV4.0之后的版本必須將OPENCV_ENABLE_NONFREE 勾上,翻車之一。
再次點擊Configure沒有紅色為止並 Configuring Done后點擊Generate,出現Generatring Done;
2.2 編譯VS2015
打開webuild中的OpenCV.sln,右鍵點擊解決方案,重新生成解決方案,等待生成完成;
生成解決方案,翻車多次,總是有錯誤,一個個解決。
記住選擇Debug + X64 (根據系統配置來)
然后在CMakeTargets下找到INSTALL,右鍵僅用於項目,僅生成INSATLL;完成后webuild文件夾里多了一個install文件夾:
到此編譯工作基本完成了。
三、配置OpenCV與VS2015的環境
(1)環境變量,系統變量,在path中添加OpenCV的路徑:D:\Program Files\opencv4.1.1\opencv\webuild\install\x64\vc14\bin
(2)新建一個空的Debug + X64項目,點擊菜單欄的"視圖"–>“其他窗口”–>“屬性管理器”。
在Microsoft.Cpp.x64.user–>VC++目錄–>庫目錄中加入
包含目錄:
D:\Program Files\opencv4.1.1\opencv\webuild\install\include
D:\Program Files\opencv4.1.1\opencv\webuild\install\include\opencv2
庫目錄:
D:\Program Files\opencv4.1.1\opencv\webuild\install\x64\vc14\lib
D:\Program Files\opencv4.1.1\opencv\webuild\install\x64\vc14\bin
連接器,輸入,附加依賴項
附加依賴項:
opencv_world411d.lib
opencv_aruco411d.lib
opencv_bgsegm411d.lib
opencv_bioinspired411d.lib
opencv_calib3d411d.lib
opencv_ccalib411d.lib
opencv_core411d.lib
opencv_datasets411d.lib
opencv_dnn_objdetect411d.lib
opencv_dnn411d.lib
opencv_dpm411d.lib
opencv_face411d.lib
opencv_features2d411d.lib
opencv_flann411d.lib
opencv_fuzzy411d.lib
opencv_gapi411d.lib
opencv_hfs411d.lib
opencv_highgui411d.lib
opencv_img_hash411d.lib
opencv_imgcodecs411d.lib
opencv_imgproc411d.lib
opencv_line_descriptor411d.lib
opencv_ml411d.lib
opencv_objdetect411d.lib
opencv_optflow411d.lib
opencv_phase_unwrapping411d.lib
opencv_photo411d.lib
opencv_plot411d.lib
opencv_quality411d.lib
opencv_reg411d.lib
opencv_rgbd411d.lib
opencv_saliency411d.lib
opencv_shape411d.lib
opencv_stereo411d.lib
opencv_stitching411d.lib
opencv_structured_light411d.lib
opencv_superres411d.lib
opencv_surface_matching411d.lib
opencv_text411d.lib
opencv_tracking411d.lib
opencv_video411d.lib
opencv_videoio411d.lib
opencv_videostab411d.lib
opencv_xfeatures2d411d.lib
opencv_ximgproc411d.lib
opencv_xobjdetect411d.lib
opencv_xphoto411d.lib
程序讀取:
import os
for name in os.listdir('./'):
print(name)
配置完成!
四、測試結果
五、問題
配置完之后無法使用xfeature2d模塊,出現無法打開包括文件: “features2d/test/test_detectors_regression.impl.hpp”錯誤;
無法生成xfeatures2d的動態庫:OpenCV源碼中opencv/sources/3rdparty/ffmpeg 中缺少opencv_ffmpeg.dll和opencv_ffmpeg_64.dll.
1、“boostdesc_bgm.i”: No such file or directory opencv_xfeatures2d D:\OpenCV\opencv_contrib-4.1.1\modules\xfeatures2d\src\boostdesc.cpp 654
在OpenCV-contribu4.1.1路徑中D:\Program Files\opencv_contrib-4.1.1\modules\xfeatures2d\src,補齊以下文件,(網上搜索下載放到路徑文件夾中)。
2、“features2d/test/test_detectors_regression.impl.hpp”錯誤、No such file or directory opencv_test_xfeatures2d D:\OpenCV\opencv_contrib-4.1.1\modules\xfeatures2d\test\test_features2d.cpp 51。
在OpenCV路徑下D:\Program Files\opencv4.1.1\opencv\sources\modules\features2d\test,修改頭文件,或者改變文件路徑,或者補齊以下5個文件。
test_descriptors_invariance.impl.hpp
test_descriptors_regression.impl.hpp
test_detectors_invariance.impl.hpp
test_detectors_regression.impl.hpp
test_invariance_utils.hpp
將opencv-4.1.1/modules/features2d/test/文件下的5個文件拷貝到opencv_contrib-4.1.1/modules/xfeatures2d/test/文件下。同時修改頭文件。
① test_features2d.cpp
#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"
修改成
#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"
② test_rotation_and_scale_invariance.cpp
#include "features2d/test/test_detectors_invariance.impl.hpp"
#include "features2d/test/test_descriptors_invariance.impl.hpp"
修改成
#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"
修改完了之后再用VS2015重新生成解決方案->INSTALL,發現在D:\OpenCV4.1.1\opencv\webuild\install\x64\vc14\lib的庫中終於生成了opencv_xfeatures2d411d.lib。再把它加到附加項中。重復以下 ‘’三‘’中的步驟,會發現生成解決方案時,成功的個數會變多。最后用測試代碼進行測試,發現沒有問題。