opencv3.X配置opencv_contrib-3.X.X 並通過程序驗證Fast特徵檢測

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://mp.csdn.net/postedit/83211142

(針對已經使用opencv3.X的使用者)

一:下載並安裝cmake。https://cmake.org/download/   

下載壓縮包.zip文件,然後解壓,在bin目錄下在找到cmake-gui.exe 打開運行。

二:根據你下載的opencv3.x版本下載相應的opencv_contrib-3.x.x。

https://opencv.org/releases.html

我下載的是opencv是3.3.0,所以我使用的opencv_contrib-3.x.x是opencv_contrib-3.3.0

版本匹配很重要!!!!!

三:開始進行配置。

運行cmake-gui,得到一個運行界面。

where is the sourse code: 放置的路徑爲你電腦的opencv3.x下的sources目錄。

where to build the binaries:放置的路徑爲你自己新建的目錄。(爲了存放之後進行配置的結果,目錄記好)

(根據你所用的VS版本和系統位數來選,比如我的 VS2017+x64(64位系統))

第一次編譯:點擊Configure。

如果編譯完成會顯示;

溫馨提示:在這次編譯完成之後,可以將·Build-opencv-world選上,生成opencv_world330d.lib非常有用,就可以省去在後邊創建工程時包含多個動態鏈接,只包含這一個即可。本文後面說明的是使用多個鏈接,比較麻煩,建議勾選

第二次編譯:在配置表中找到“OPENCV_EXTRA_MODUALS_PATH”,設置其參數值爲opencv_contrib源碼包中的modules目錄。本次編譯去除勾選WITH_CUDA選項。

再按下Configure.成功後顯示Configuring done。可能會有紅色的框條出現,再重複一次Configure,更新後紅色消除。

最後:按Generate生成工程,如果配置和生成工程都沒有問題的話,底下應該有Configuring done和Generating done兩行。

 

至此,生成相關文件已經完成。

四:打開opencv.sln工程,進行編譯

1、打開剛剛保存目錄下的 opencv.sln文件

2、在解決方案資源管理器中,選擇“解決方案 opencv”->右鍵->重新生成解決方案。

3、找到CMakeTargets下的INSTALL,右鍵INSTALL->僅用於項目->僅生成INSTALL。

4、注意debug和release都編譯一遍。
(由於我使用的是debug所以就沒有都編譯,只是在debug環境下編譯了)

編譯完成後,發現在目標文件夾下有了.\install文件夾。

其內容如下:

五:編譯成功後,在lib文件中有以下等相關.dll文件(一堆)。

六:重新配置環境

1、重新配置環境變量

①、環境變量設置:

②、用戶變量配置:

 

把你的install文件中的bin目錄加進去:

 

2、重新配置項目環境

①、包含目錄:

②、庫目錄:

③、附加依賴項:就是上面說的那一堆。(這個時候如果你生成了opencv_world330d.lib就可以只加入這一個,省時省力。就像你之前配置opencv3.x的時候也只是加入這一個動態鏈接。注意別加錯了)

七:代碼測試fast特徵檢測:

代碼;

#include "opencv2/opencv.hpp"
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/core/core.hpp>
#include <iostream>
using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;
void on_Trackbar(int, void*);
int thre = 40;
Mat src;

int main()
{
    src = imread("D:\\Documents\\Pictures\\8.jpg");
    resize(src,src,Size(600,450));
    if (src.empty())
    {
        printf("open failed\n");
        return -1;
    }
    namedWindow("src", WINDOW_AUTOSIZE);
    imshow("src", src);

    namedWindow("result", WINDOW_AUTOSIZE);
    createTrackbar("threshould", "result", &thre, 255, on_Trackbar);
    waitKey(0);
    return 0;
}

void on_Trackbar(int, void*)
{
    vector<KeyPoint> keypoints;
    Mat dst = src.clone();
    Ptr<FastFeatureDetector> detector = FastFeatureDetector::create(thre);
    detector->detect(src, keypoints);
    drawKeypoints(dst, keypoints, dst, Scalar::all(-1), DrawMatchesFlags::DRAW_OVER_OUTIMG);
    imshow("result", dst);
}

結果:

至此完結。希望對大家有用。如果有問題,希望大家一起討論研究。不喜勿噴,謝謝。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章