OpenCV3.4.1+opencv_contrib编译:windows 10

做计算机视觉的朋友,估计没有人没用过OpenCV,著名的开源计算机视觉算法库。OpenCV还在不断发展中,最新的3.4版本,已经可以支持cnn了,以后估计会有集成更多的功能。
不过,由于知识产权的原因,OpenCV将很多算法放到了opencv_contrib中,在github上,这两块代码就是分别放在不同的repository中的。
这里写图片描述
OpenCV官方提供了windows可安装的版本,已经有编译好的dll,不过不包括opencv_contrib。如果想应用这部分算法,则需要自己编译opencv,将opencv_contrib编译到opencv中。以下简单介绍以下opencv在windows下编译的过程。
所需材料:

  • opencv源代码
  • opencv_contrib源代码
  • cmake
  • vs2015
  • 一个通畅的网络(这点很重要~)

1.下载opencv源代码
源代码的地址是:https://github.com/opencv/opencv/,默认是master分支。其实都下载master分支,就可以。不过,为了清晰源代码版本,以后还能做到匹配,我选择了tags中的最新版本,3.4.1版本,地址是:
https://github.com/opencv/opencv/tree/3.4.1
代码可通过git下载,用git clone命令即可。也可以在网页上点击Clone or download这个绿色按钮,然后点击download zip就可以。
这里写图片描述

2.下载opencv_contrib源代码
opencv_contrib代码地址是:https://github.com/opencv/opencv_contrib
3.4.1版本代码地址是:https://github.com/opencv/opencv_contrib/tree/3.4.1
相信大家也都发现规律了,参考下载opencv源代码方法即可。
下载后,解压代码到本地目录。
这里写图片描述
上图就是我解压的目录,其中有opencv和opencv_contrib的解压目录,还有一个build目录,用来放置cmake生成的vs工程。
3.安装cmake
CMake是一个跨平台的编译工具,能够输出各种各样的makefile或者project文件。
这里写图片描述
下载地址:https://cmake.org/files/v3.11/cmake-3.11.3-win64-x64.msi
下载之后直接运行,默认安装即可。
4.用cmake生成vs工程
安装好cmake之后,运行cmake,先填写开头的两项
这里写图片描述
Where is the source code是opencv源码路径,即“源路径”
Where to build the binaries是要生成opencv的vs工程路径,即“目的路径”
点击Configure,弹出对话框,选择编译工程的平台。我选的是64位的VS2015
这里写图片描述
点击Finish,即开始配置。这需要一定的时间,期间要下载一些依赖项,此时通畅的网络就起了关键作用,如果下载不全,可通过查看日志文件CMakeDownloadLog.txt手动下载。在完成第一次配置后,出现如下画面。
这里写图片描述
有很多红色选项,说明有问题,解决方法就是再点击一次Configure,这次快多了,出现下面画面。
这里写图片描述
全变白了,说明没问题了,这是需要做两项改动。
这里写图片描述
第一项是勾选BUILD_opencv_world选项,这样,在调用dll时,只调用这一个就行了,不用根据功能选择了,省了些麻烦。
这里写图片描述
这第二项,自然是在OPENCV_EXTRA_MODULES_PATH选项中,填写opencv_contrib解压目录下,modules文件夹的路径,这样就把opencv_contrib编译进去了。
然后再按Configure进行配置,和前面一样,一次红,二次白,不在赘述了。第二次全白了,就可以按Generate按键,生成vs工程文件了。
这里写图片描述
5.用VS2015编译opencv源代码
生成工程完毕,在刚才说的“目的路径”下,可以看到OpenCV工程文件
这里写图片描述
用vs2015打开工程文件,选择Debug x64,点击生成->生成解决方案开始编译,这个过程比较漫长,需要耐心,结果如下。
这里写图片描述
没有错误,然后右击INSTALL,点击“仅用于项目->仅生成INSTALL”
这里写图片描述
即可编译生成dll相关文件,编译过程如下。
这里写图片描述
然后将编译选项调整为Release x64,再重复一下以上的过程。此时在“目的路径”的install目录下,生成了调用dll的全部内容。
这里写图片描述
6.调用生成的dll实现图像处理功能
为了验证生成文件的有效性,新建工程,将库目录和包含目录指定到install文件夹下x64/vc14/lib和include文件夹。处理图片文标准测试图片house
这里写图片描述
测试代码如下:

#include "opencv2/opencv.hpp"  
#include"opencv2/xfeatures2d.hpp"

#if _DEBUG
#pragma comment(lib,"opencv_world341d.lib")
#else
#pragma comment(lib,"opencv_world341.lib")
#endif // _DEBUG

using namespace cv;
using namespace std;

int main(){
    Mat img = imread("E:/PASCAL/OpenCV/house.jpg", CV_LOAD_IMAGE_COLOR);
    Ptr<Feature2D> sift = xfeatures2d::SIFT::create();
    vector<KeyPoint> keypoints;
    Mat descriptors;

    sift->detectAndCompute(img, noArray(), keypoints, descriptors);
    drawKeypoints(img, keypoints, descriptors, Scalar(0, 255, 255));
    imshow("Result", descriptors);
    waitKey(0);

    return 0; 
}

测试结果如下。
这里写图片描述
实现了contrib中sift特征点的提取。

评论 92
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值