vs2015 opencv3.4.0配置opencv-contrib3.4.0

 前言:

      由于OpenCV功能越来越臃肿,OpenCV3改变了项目架构,使用内核+插件的架构形式。 因此,OpenCV从2.x到3.x是一个很大的转变,对于很多功能不完善、性能不稳定的模块,都被放到了extra_modules(扩展模块)里面了。在Github中,除了存放正式版OpenCV的主仓库和新增加的OpenCV_extra仓库外,还添加了一个OpenCV_contrib的全新仓库,功能有:脸部识别、文本识别、边缘检测、追踪算法等,里面存放的是功能未稳定的代码,如果需要使用这些功能,就需要重新进行编译。

    由于任务要求,需要把OpenCV的扩展模块中的xfeatures给包含进来,因此自己手动编译OpenCV3.1.0与其扩展模块实现。这个过程其实并不难,只要如下三步即可实现。在正式开始之前,有些准备工作需要做,就是下载OpenCV3.1.0还有其扩展模块,以及CMake GUI工具。在这里,我先贴出下载地址,大家如果有需要可以去上面下载。

文章附件里面有cmake-3.9.0-rc3-win64-x64和opencv_contrib-3.4.0


OpenCV3.1.0下载地址: 

https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download

OpenCV3.1.0安装教程: 

https://blog.csdn.net/qq_17550379/article/details/78201442

https://blog.csdn.net/duwangthefirst/article/details/79452314

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

cmake-gui下载地址(3.11.0): https://cmake.org/download/

一、下载OpenCV contrib

    这里我事先已经下载并配置好了VS2015和OpenCV3.1.0,所以我们直接下载OpenCVcontrib,进入上面给出的网址,点击releases,如下:

进入releases以后:

由于我的OpenCV版本是3.1.0,因此我们下载对应的zip压缩文件,如下:


下载好以后与opencv放在同一个目录并且解压,然后在opencv同一个目录下创建一个新的文件夹我取得名字叫myopencv用于存放编译的文件,这个myopencv就是自己编译的opencv版本。

二、下载cmake-gui

我们进入网址,选择win64位版本对应的压缩包,如下所示:

点击下载:

下载好以后,我们对其进行解压缩:

打开其bin目录下的cmake-gui.exe工具:

运行该程序,输入如下目录:

上面一个框输入的是opencv目录下的sources目录(在本博客中,opencv目录指的是我们已经成功安装的那个opencv的目录,跟contrib库无关),下面一个文本框输入的是编译文件存放的目录,也就是第一步创建的目录。

此时最好配置能Google上网,不然容易下载必要文件失败而报错。

点击configure按钮,此时会让我们选择编译工具以及位数,这里注意这个32位和64为最好要之前成功配置的opencv的位数一致,我的是Visual visual studio 14 2015,然后确认,然后点击finish按钮,等待configure done。

 

下一步,在图中

OPENCV_EXTRA_MODULES_PATH在右侧编辑输入已经解压好的contrib库目录下面的modules文件路径,并且将在上面窗口中找到

WITH_CUDA将右侧的勾去掉,然后再次点击configure,等待窗口出现configure done。

然后点击Generate,回提示Generate Done。恭喜,完成了一半!!! 

编译完成后,我们在资源管理器下查看上面设置的文件输出目录,发现目录下多出了很多文件,其实就是OpenCV.sln工程文件:

三、配置VS生成install

     用VS 2015打开OpenCV.sln工程,在解决方案中可以查看工程目录:

      编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别,也可以选择release,因为自己的工程可能要用到相应的动态链接库。

我们先对项目进行重新生成解决方案:

等待一段时间,直至生成完毕:

  找到CMakeTargets->INSTALL, 右键选择生成install即可。这样就会在D:\OpenCV3.1\opencv\newbuild下面多出一个install的文件夹,到如果能成功生成,编译就结束了。

等待几分钟:

 然后,在工程目录newbuild下的install目录中,可以看到生成了一堆文件,这堆文件代表着编译完成:

四、配置新的库文件

     重新配置OpenCV,新建一个项目打开,然后配置opencv工程属性:

打开属性管理器:

双击图中Microsoft.Cpp.Win32.use前面的扳手图标,进行配置:

vc++目录,设置可执行文件目录:

设置包含目录:

包含以下文件目录:

D:\OpenCV3.1\opencv\newbuild\include
D:\OpenCV3.1\opencv\newbuild\include\opencv 
D:\OpenCV3.1\opencv\newbuild\include\opencv2 

设置库文件目录:

设置库目录:

然后是附加依赖项:

在里面粘贴如下库文件:

opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_bioinspired310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_datasets310d.lib
opencv_dnn310d.lib
opencv_dpm310d.lib
opencv_face310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_fuzzy310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_line_descriptor310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_optflow310d.lib
opencv_photo310d.lib
opencv_plot310d.lib
opencv_reg310d.lib
opencv_rgbd310d.lib
opencv_saliency310d.lib
opencv_shape310d.lib
opencv_stereo310d.lib
opencv_stitching310d.lib
opencv_structured_light310d.lib
opencv_superres310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib

我安装的是opencv3.4.0,则在里面粘贴如下库文件:

opencv_aruco340d.lib
opencv_bgsegm340d.lib
opencv_bioinspired340d.lib
opencv_calib3d340d.lib
opencv_ccalib340d.lib
opencv_core340d.lib
opencv_datasets340d.lib
opencv_dnn340d.lib
opencv_dpm340d.lib
opencv_face340d.lib
opencv_features2d340d.lib
opencv_flann340d.lib
opencv_fuzzy340d.lib
opencv_hdf340d.lib
opencv_highgui340d.lib
opencv_img_hash340d.lib
opencv_imgcodecs340d.lib
opencv_imgproc340d.lib
opencv_line_descriptor340d.lib
opencv_ml340d.lib
opencv_objdetect340d.lib
opencv_optflow340d.lib
opencv_phase_unwrapping340d.lib
opencv_photo340d.lib
opencv_plot340d.lib
opencv_reg340d.lib
opencv_rgbd340d.lib
opencv_saliency340d.lib
opencv_shape340d.lib
opencv_stereo340d.lib
opencv_stitching340d.lib
opencv_structured_light340d.lib
opencv_superres340d.lib
opencv_surface_matching340d.lib
opencv_text340d.lib
opencv_tracking340d.lib
opencv_video340d.lib
opencv_videoio340d.lib
opencv_videostab340d.lib
opencv_xfeatures2d340d.lib
opencv_ximgproc340d.lib
opencv_xobjdetect340d.lib
opencv_xphoto340d.lib

最后设置环境变量, 我的编译生成的OpenCV v14/bin的目录如下: 

D:\OpenCV3.1\opencv\newbuild\install\x86\vc14\bin

五、代码测试

为了测试扩展模块是否配置成功,我们编写测试代码:

#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( )
{
	Mat img = imread("test3.png", IMREAD_GRAYSCALE);
	if (img.empty())
	{
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("原图:", CV_WINDOW_AUTOSIZE);
	imshow("原图:", img);
 
	int minHessian = 400;
	Ptr<SURF> detector = SURF::create(minHessian);
	vector<KeyPoint> keypoints;
	detector->detect(img, keypoints);
 
	Mat img_keypoints;
	drawKeypoints(img, keypoints, img_keypoints, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
	namedWindow("key points", CV_WINDOW_AUTOSIZE);
	imshow("key points", img_keypoints);
 
	waitKey(0);
	return 0;
}

 

运行代码,结果如下:

大功告成!!!打完收工!!!
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值