opencv4.5.0 +contrib編譯流程


(默認已完成安裝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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM