在windows配置OpenCV和添加opencv_contrib配置

前言

实验主要是图像的特征提取以及特征匹配。

在Opencv中集成了常用的几种特征提取以及匹配方法,比如SIFT,SURF,以及orb特征。

所以第一部的实验计划就是在Windows下跑OpenCV,并且跑一下SIFT特征提取方法。

实验环境

Visual Studio 2013

Windows 7

OpenCV3.1.0

CMake 3.6.2(因为再往前的话没有64位版本)

配置步骤

第一步

首先是在Visual Studio加入OpenCV,这一步比较简单,跟着教程:OpenCV3.1.0+VS2013开发环境配置,基本没有什么坑。

第二步 在OpenCV中加入opencv_contrib

因为特征提取的方法在OpenCV库是不包含的,需要额外添加支持库,这个库叫opencv_contrib,这个添加步骤比较繁琐,大体按照这个教程来OpenCV 3.1.0 + opencv_contrib编译(Windows),但是从我的环境中还是出现了几处有问题的地方,在这里要注意一下:
1. CMake版本一定要选择64位版本,我用的是CMake 3.6.2 x64版本
2. 在第一次编译的时候,点击Config的时候,选择的是visual studio 12 2013 x64
3. 第一次编译电脑要翻墙,否则有一个文件会下不了(这一步教程也提到了)
4. 第一次编译之后,CMake中间的对话框汇报警告(红色)这个不用担心不用管它,接着按教程来
5. 用CMake GUI编译两次之后,打开位于opencv_contrib-3.1.0\modules\bioinspired\src\opencl文件夹:打开retina_kernel.cl,把所有的注释的//***删掉,要不打开OpenCV.sln编译会出错。
6. 打开OpenCV.sln之后,选择x64来编译。
7. 第四大步中配置到项目,根据自己的实际情况来配置,教程是x86编译的,我使用x64编译的,文件夹路径会不一样
8. 最后的附加依赖项中,如果在编译的时候是debug版本,那么添加的库名称应该都加上xxxd.lib

系统环境变量中添加path路径

完成以上步骤,在项目中编码是没问题的,但是在运行的时候还是会报...计算机中丢失opencv_xfeatures2d310d.dll的错误提示框,因为是系统无法找到我们编译之后的库文件。
这时候需要在系统的环境变量——系统变量——path变量中添加opencv_contrib\install\x64\vc12\bin变量。
我的变量路径是:D:\OpenCV3.1.0\tools\opencv_contrib\install\x64\vc12\bin

添加完环境变量之后要重启电脑!

在新项目中调用SIFT方法

最后就可以在新项目中调用SIFT等特征提取以及匹配方法了。

#include <opencv2/opencv.hpp>  
#include <opencv2/xfeatures2d.hpp>

using namespace cv;
using namespace std;

void main()
{
    Ptr<Feature2D> f2d = xfeatures2d::SIFT::create();

    //Mat img = cv::imread("F://1.png");    //注意这里的//的方向,一开始写反了,怎么都出不来。
    Mat img_1 = imread("F://Data/3.png");
    Mat img_2 = imread("F://Data/4.png");
    //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);
}

其他参考

无法生产opencv_bioinspired310.lib”解决方法
这个是总纲
这个是讲添加环境变量的问题

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值