OpenCV 3.1.0編譯與添加擴展模塊

OpenCV 3.1.0編譯與添加擴展模塊

最近在弄個東西,需要把OpenCV的擴展模塊中的xfeatures給包含進來,發現要自己編譯OpenCV3.1.0與其擴展模塊纔可以實現。經過一番實踐,終於編譯完成,總結了一下,其實很簡單,只要如下三步即可實現。在正式開始之前,有些準備工作需要做,就是下載OpenCV3.1.0還有其擴展模塊,以及CMake GUI工具。

OpenCV3.1.0下載地址:
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download

OpenCVcontrib下載地址:
https://github.com/opencv/opencv_contrib

cmake-gui下載地址(3.7.2): https://cmake.org/download/

把OpenCV就解壓縮到指定目錄,其中我是把OpenCV解壓縮到
這裏寫圖片描述

然後安裝CMake GUI,默認安裝即可。
這裏寫圖片描述
好了之後就正式開始。
第一步
配置與生成CMake, 打開CMake GUI之後,選擇好路徑,點擊配置,在打開的對話框中一定要選擇VS14 Windows 64纔可以。然後它就會自動運行得到如下結果:
這裏寫圖片描述

然後找到OPENCV_EXTRA_MODULE_PATH設置擴展模塊的路徑運行完成顯示如下:
這裏寫圖片描述
這裏寫圖片描述

第二步:
配置VS生成installer,首先到CMake的Build輸出目錄
D:\opencv3.1\opencv\newbuild下找到OpenCV.sln文件,雙擊打開之後,右鍵選擇
->重新生成解決方案,然後在找到CMakeTargets->INSTALL, 右鍵選擇生成installer即可。這樣就會在D:\opencv3.1\opencv\newbuild下面多出一個installer的文件夾,到如果能成功生成,編譯就結束了。
這裏寫圖片描述

第三步:
重新配置OpenCV,新建一個項目打開,到【視圖】-》【其它窗口】-》【屬性管理器】然後選擇64 debug下的User Cpp從屬性中打開配置窗口

分別設置好 包含目錄
這裏寫圖片描述

庫目錄
這裏寫圖片描述

還有附件依賴項中添加如下:
opencv_calib3d310d.lib
opencv_core310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_photo310d.lib
opencv_shape310d.lib
opencv_stitching310d.lib
opencv_superres310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
ippicvmt.lib
opencv_xfeatures2d310d.lib
opencv_xobjdetect310d.lib

最後千萬別忘記把bin目錄改過來, 我的編譯生成的OpenCV v14/bin的目錄如下:
D:\opencv3.1\opencv\newbuild\install\x64\vc14\bin

添加到系統的環境變量中即可。把原來的去掉。這樣就可以使用OpenCV擴展模塊xfeatures2d了。測試代碼與運行結果如下:

#include <stdio.h>
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include "opencv2/highgui.hpp"

using namespace cv;
using namespace cv::xfeatures2d;
using namespace std;

int main(int argc, char** argv) {
    Mat img_1 = imread("D:/vcprojects/images/test.png", IMREAD_GRAYSCALE);   
    if (img_1.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    imshow("input image", img_1);

    int minHessian = 400;
    Ptr<SURF> detector = SURF::create(minHessian);
    vector<KeyPoint> keypoints;
    detector->detect(img_1, keypoints);

    Mat img_keypoints1;
    drawKeypoints(img_1, keypoints, img_keypoints1, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
    namedWindow("key points", CV_WINDOW_AUTOSIZE);
    imshow("key points", img_keypoints1);

    waitKey(0);
    return 0;
}

基於xfeature實現SURF特徵檢測的運行結果如下:
這裏寫圖片描述

關注微信公衆號【OpenCV學堂】獲取圖像處理相關知識。

發佈了269 篇原創文章 · 獲贊 1318 · 訪問量 365萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章