【opencv学习之九】opencv3.2配置opencv_contrib方法

本文详细介绍如何在OpenCV 3.2中配置并使用SIFT算法,包括所需软件的下载与安装步骤、CMake配置过程及Qt编译示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

opencv在3.0版本后sift等一些非免费开源的方法和函数被放到到了opencv_contrib库里,所以直接用opencv调用sift相关函数是无法加载的,需要自己Cmake源代码生成包含opencv_contrib的库;

首先准备如下:

1、下载vs2015,链接:https://pan.baidu.com/s/1c28f8ze,提取码:52dj;秘钥在网上找,然后安装;

2、下载qt5.8;官网需要注册,网盘链接:链接: https://pan.baidu.com/s/1jICDilg 密码: x9fm;安装;

3、下载qt-vs工具;网盘链接:链接: https://pan.baidu.com/s/1c2piQfI 密码: t64d;安装后,在vs里设置qt路径,如何安装查看前面博客;

4、下载opencv3.2,可以在github上下载,这里网盘链接:链接: https://pan.baidu.com/s/1skVLwKl 密码: 3r8q;安装;

5、下载opencv_contrib,也可以在GitHub上下载,另网盘:链接: https://pan.baidu.com/s/1gftgyjx 密码: rdem;解压放到opencv文件夹里;

6、下载Cmake,这个也可以在官网下载,另网盘链接:链接: https://pan.baidu.com/s/1nvJY7X3 密码: 3uv3;安装;

然后cmake opencv的源代码:

1、打开Cmake,选择opencv安装文件里的sources文件夹;

2、选择要build的文件夹;如下图:



3、点击Generate,后如下图,finish后等待Cmake;



4、完了后,找到“OPENCV_EXTRA_MODUALS_PATH”,设置其参数值为opencv_contrib源码包中的modules目录;如下:


5、点击configure.成功后显示configuring done,然后点击Generate;

6、都configure后,在你build的文件里会生成相应的文件,找到OpenCV.sln文件双击,用vs2015进行编译或者直接点击Cmake的open project按钮;

7、vs2015编译参考博客:http://blog.youkuaiyun.com/cosmispower/article/details/60601151;

最后编译好了,的lib在目标文件夹里的install文件里;qt5.8编译时候.pro文件添加如下,目录和include根据自己目录添加路径:

INCLUDEPATH+=D:/opencv320/install/include
INCLUDEPATH+=D:/opencv320/install/include/opencv
INCLUDEPATH+=D:/opencv320/install/include/opencv2

unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_aruco320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_bgsegm320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_bioinspired320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_calib3d320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_ccalib320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_core320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_datasets320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_dnn320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_dpm320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_face320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_features2d320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_flann320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_fuzzy320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_highgui320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_imgcodecs320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_imgproc320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_line_descriptor320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_ml320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_objdetect320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_optflow320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_phase_unwrapping320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_photo320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_plot320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_reg320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_rgbd320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_saliency320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_shape320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_stereo320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_stitching320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_structured_light320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_superres320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_surface_matching320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_text320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_tracking320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_video320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_videoio320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_videostab320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_xfeatures2d320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_ximgproc320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_xobjdetect320d
unix|win32: LIBS += -L$$PWD/../../opencv320/install/x64/vc14/lib/ -lopencv_xphoto320d

INCLUDEPATH += $$PWD/../../opencv320/install/x64/vc14
DEPENDPATH += $$PWD/../../opencv320/install/x64/vc14

qt编译的时候会异常跳出,vs2015编译的时候会报错缺少***dll;这时候把build对应编译的目录bin文件下的dll全部复制到c盘系统文件C:\Windows\System32,和C:\Windows\SysWOW64里面;再次编译程序就ok了;附sift测试代码qt mainwindow.cpp代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <opencv\cv.h>
#include<opencv/highgui.h>

#include <opencv2/opencv.hpp>  //头文件
#include <opencv2/xfeatures2d.hpp>
using namespace cv;  //包含cv命名空间
using namespace std;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

//           //声明IplImage指针
//           IplImage *pImg;
//           //载入图片
//           pImg = cvLoadImage("D:/1.jpg");
//           //创建窗口
//           cvNamedWindow("Image",1);
//           //显示图像
//           cvShowImage("Image",pImg);
//           //等待按键
//           cvWaitKey(-1);
//           //销毁窗口
//           cvDestroyWindow("Image");
//           //释放图像
//           cvReleaseImage(&pImg);

    //Create SIFT class pointer
    Ptr<Feature2D> f2d = xfeatures2d::SIFT::create();
    //读入图片
    Mat img_1 = imread("D:/source.png");
    Mat img_2 = imread("D:/mubiao.jpg");
    //Detect the keypoints
    vector<KeyPoint> keypoints_1, keypoints_2;
    f2d->detect(img_1, keypoints_1);
    f2d->detect(img_2, keypoints_2);
    //Calculate descriptors (feature vectors)
    Mat descriptors_1, descriptors_2;
    f2d->compute(img_1, keypoints_1, descriptors_1);
    f2d->compute(img_2, keypoints_2, descriptors_2);
    //Matching descriptor vector using BFMatcher
    BFMatcher matcher;
    vector<DMatch> matches;
    matcher.match(descriptors_1, descriptors_2, matches);
    //绘制匹配出的关键点
    Mat img_matches;
    drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);
//    imshow("match图", img_matches);
//    //等待任意按键按下
//    waitKey(0);
    imshow("match",img_matches);
    waitKey(0);

}

MainWindow::~MainWindow()
{
    delete ui;
}
效果如下:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值