(默認已完成安裝visual studio 2019與python)
1.下載opencv與opencv-contrib模塊,國內鏡像源:OpenCV/opencv_contrib國內快速下載 | 廬雪技術博客 (bzblog.online)
2.下載cmake-gui版本 安裝
3.解壓opencv-contrib與opencv到目標文件夾
4.打開cmake,將解壓opencv文件夾作為source,新建buildfile 作為編譯文件夾
5.出現錯誤:
解決:
一、ippicv_2020_win_intel64_20191018_general.zip下載失敗
進入opencv4.5.03rdparty\ippicv目錄
將 ippicv.cmake 的https://raw.githubusercontent.com
修改為:https://raw.staticdn.net
二、opencv_videoio_ffmpeg_64.dll、opencv_videoio_ffmpeg.dll下載失敗
進入opencv4.5.0/3rdparty\\ffmpeg目錄
將 ffmpeg.cmake 的https://raw.githubusercontent.com
修改為:https://raw.staticdn.net
參考:https://blog.csdn.net/valley2013/article/details/106911688/
5.進行configure
6.編譯opencv-contrib:將OPENCV-ENABLE-NONFREE使能勾選,在下一格opencv extra module path設置contrib modulle文件夾 再勾選BUILD-opencv-world
7.configure
8.
三、boostdesc_bgm.i相關文件下載失敗
進入opencv_contrib-3.4.2\modules\xfeatures2d\cmake目錄
將 download_boostdesc.cmake中的https://raw.githubusercontent.com
修改為:https://raw.staticdn.net
四、vgg_generated_120.i相關文件下載失敗
進入opencv_contrib-3.4.2\modules\xfeatures2d\cmake目錄
將 download_vgg.cmake中的https://raw.githubusercontent.com
修改為:https://raw.staticdn.net
五、face_landmark_model.dat下載失敗
修改.\opencv_contrib-3.4.2\modules\face\CMakeLists.txt,
將https://raw.githubusercontent.com
修改為:https://raw.staticdn.net
可能有時候會失敗,多configure幾次(如果一直下不了就不用管了,后面步驟也能進行)
9.generate,將編譯好的buildfile打開,找到install,打開opencv.sln(即open project)
10.直接在上方生成處點擊生成解決方案
10.在CMakeTargets下面找到INSTALL,右鍵有僅用於項目->僅編譯INSTALL ()
11.把剛生成的*\Binfile\install\x64\vc116\bin作為環境變量加進入(如果之前有OpenCV的就替換之前的,切記!)。
12.VS配置:創建一個空白的c艹文件,在屬性管理器中右鍵單擊debug x64 創建新的項目屬性表,
a.增加編譯頭文件包含目錄
b.增加編譯庫文件包含路徑
增加庫鏈接,打開install路徑,找到x64/vc16/lib,將里面的lib復制名字過來
驗證:
#include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include <iostream> using namespace cv; using namespace cv::xfeatures2d; using namespace std; int main(int argc, char** argv) { Mat test1 = imread("1.jpg"); Mat atest1 = imread("2.jpg"); if (test1.empty()) { cout << "error!" << endl; } imshow("test1 image", test1); imshow("atest1 image", atest1); auto detector = SIFT::create(); vector<KeyPoint> keypoints_test1, keypoints_atest1; Mat descriptor_test1, descriptor_atest1; detector->detectAndCompute(test1, Mat(), keypoints_test1, descriptor_test1); detector->detectAndCompute(atest1, Mat(), keypoints_atest1, descriptor_atest1); Ptr<FlannBasedMatcher> matcher = FlannBasedMatcher::create(); vector<DMatch> matches; matcher->match(descriptor_test1, descriptor_atest1, matches); Mat dst; drawMatches(test1, keypoints_test1, atest1, keypoints_atest1, matches, dst); imshow("match-demo", dst); waitKey(0); return 0; }
注意:1,2.jpg需要自己的圖片路徑
最終效果:
參考鏈接:(四十一)CMake+VS+opencv/opencv_contrib 環境配置 - 知乎 (zhihu.com)