win10+vs2017+opencv4.0.1+opencv_contrib-4.0.1详细教程

win10+vs2017+opencv4.0.1+opencv_contrib-4.0.1详细教程)

本文转摘自Bubble_water的博客,
原文链接:https://blog.csdn.net/fengxinzioo/article/details/88767399#commentBox

准备工具

cmake、vs2017、opencv4.0.1、opencv_contrib-4.0.1

一、首先安装cmake

官方地址https://cmake.org/download/

下载安装cmake-3.13.2-win64-x64.msi,默认安装。
在这里插入图片描述
二、安装VS2017

这里直接在微软官网下载即可。链接: https://visualstudio.microsoft.com/zh-hans/.

其中三个版本都可以选,Community 2017是免费社区版本,Professional 2017和Enterprise 2017是付费版,功能好像没有区别,我这里选择的是Professional版本。
付费版可以使用密匙激活,这里提供两个密匙,如果不能用了就网上找,很多的:
Professional 2017:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH
Enterprise 2017:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、opencv_contrib下载安装

1、下载链接: https://github.com/opencv/opencv_contrib/releases.
在这里插入图片描述
2、选择你的opencv对应的contrib版本,例如我装的是opencv4.0.1,对应就下载opencv_contrib-4.0.1.zip。下载完成之后直接解压即可,留着cmake使用。

opencv_contrib-4.0.1.zip解压完如下图:
在这里插入图片描述

四、提取opencv4.0.1

1、Opencv官网:https://opencv.org/releases.html
在这里插入图片描述
2、提取过程如下:
在这里插入图片描述

五、 CMake 编译

1、打开CMake,下图第一个红框输入Opencv(我的是opencv4.0.1)的sources目录(注意:不是opencv_contrib的目录,原来自己opencv的目录);第一个红框输入你自定义的输出目录。最后点左下角的Configure
在这里插入图片描述
2、点击完 Configure后会出现下图提示,点击确认后就ok了
在这里插入图片描述
3、然后选择对应vs的版本,64位系统选择Win64,默认的是Win32。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、然后就是等待了。之后显示Configuring done第一次源码配置就完成了(完成后列表不出现红色)。
在这里插入图片描述
5、要是如上述红色,需要再次单击 Configure直到不出现红色为止则完成。

6、完成上述后找到OPENCV_EXTRA_MODULES_RATH一项,添加你刚刚解压的opencv_contrib中的modules目录,其中要把OPENCV_ENABLE_NONFREE(下图红框上面一行)选上,最后点击Generate开始编译。

注意路径不要复制,需要通过cmake来选择路径!
在这里插入图片描述
7、完成后左下角显示Configuring done,Generating done。

在这里插入图片描述
8、完成之后如果在你的输出文件夹中找到OpenCV.sln文件,即表明编译成功完成。
在这里插入图片描述

六、 VS2017 编译

1、使用VS2017打开刚刚的“OpenCV.sln”文件,会反应一段时间如下图所示:
在这里插入图片描述
2、然后如图所示点击**“生成—>重新生成解决方案”,这得等一段时间
在这里插入图片描述
在这里插入图片描述
3、完成后,如下图所示:
在这里插入图片描述
4、“解决方案资源管理器—>CMakeTargets—>INSTALL—>仅用于项目—>仅生成INSTALL(B)”然后又是等好一会儿
在这里插入图片描述
完成后
在这里插入图片描述
5、最后到自定义的文件夹确认一下,找到
install文件夹**,进去查看里面的内容(如下图,注:对于后边配置环境,install文件夹作用就像配置opencv4.0时的build文件夹一样):
在这里插入图片描述
在这里插入图片描述

七、 环境配置

1、 环境变量配置

1.右键电脑【属性】
2.【高级系统设置】
3.【环境变量】
4.【系统变量】【Path】
编译目录“ D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\x64\vc15\bin” 的完整路径 (如下图),根据你自己Cmake时的路径进行修改。
在这里插入图片描述

2、配置相关目录

1、打开VS2017新建一个空项目
在这里插入图片描述
输入名字,选择生成文件夹,然后选择“空项目”,直接确定就可以了。
在这里插入图片描述
确定之后就直接进到这个界面,先将Debug的X86改成X64,Opencv4.0官方不提供X86的了,如果需要应该可以自己cmake一下(没试过,不负责任的乱说的)。
在这里插入图片描述
然后找到属性管理器 ,如下图所示:
在这里插入图片描述
创建属性表,如下图所示
在这里插入图片描述
将属性表进行命名,根据你容易记住的命名风格来。
在这里插入图片描述
打开刚才建好的属性表
在这里插入图片描述
2、include目录
双击属性表,在通用属性—>VC++目录—>包含目录中添加:
D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\include

D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\include\opencv2

根据你的路径进行修改

没有了以前的“…opencv4.0\build\include\opencv”这一条。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、然后是添加lib目录,在通用属性—>VC++目录—>库目录中添加:
在这里插入图片描述
在这里插入图片描述
4、在通用属性—>链接器—>输入—>附加的依赖项中添加:

opencv_aruco401d.lib
opencv_bgsegm401d.lib
opencv_bioinspired401d.lib
opencv_calib3d401d.lib
opencv_ccalib401d.lib
opencv_core401d.lib
opencv_datasets401d.lib
opencv_dnn401d.lib
opencv_dnn_objdetect401d.lib
opencv_dpm401d.lib
opencv_face401d.lib
opencv_features2d401d.lib
opencv_flann401d.lib
opencv_fuzzy401d.lib
opencv_gapi401d.lib
opencv_hdf401d.lib
opencv_hfs401d.lib
opencv_highgui401d.lib
opencv_imgcodecs401d.lib
opencv_imgproc401d.lib
opencv_img_hash401d.lib
opencv_line_descriptor401d.lib
opencv_ml401d.lib
opencv_objdetect401d.lib
opencv_optflow401d.lib
opencv_phase_unwrapping401d.lib
opencv_photo401d.lib
opencv_plot401d.lib
opencv_reg401d.lib
opencv_rgbd401d.lib
opencv_saliency401d.lib
opencv_shape401d.lib
opencv_stereo401d.lib
opencv_stitching401d.lib
opencv_structured_light401d.lib
opencv_superres401d.lib
opencv_surface_matching401d.lib
opencv_text401d.lib
opencv_tracking401d.lib
opencv_video401d.lib
opencv_videoio401d.lib
opencv_videostab401d.lib
opencv_xfeatures2d401d.lib
opencv_ximgproc401d.lib
opencv_xobjdetect401d.lib
opencv_xphoto401d.lib
opencv_aruco401d.lib
opencv_bgsegm401d.lib
opencv_bioinspired401d.lib
opencv_calib3d401d.lib
opencv_ccalib401d.lib
opencv_core401d.lib
opencv_datasets401d.lib
opencv_dnn401d.lib
opencv_dnn_objdetect401d.lib
opencv_dpm401d.lib
opencv_face401d.lib
opencv_features2d401d.lib
opencv_flann401d.lib
opencv_fuzzy401d.lib
opencv_gapi401d.lib
opencv_hdf401d.lib
opencv_hfs401d.lib
opencv_highgui401d.lib
opencv_imgcodecs401d.lib
opencv_imgproc401d.lib
opencv_img_hash401d.lib
opencv_line_descriptor401d.lib
opencv_ml401d.lib
opencv_objdetect401d.lib
opencv_optflow401d.lib
opencv_phase_unwrapping401d.lib
opencv_photo401d.lib
opencv_plot401d.lib
opencv_reg401d.lib
opencv_rgbd401d.lib
opencv_saliency401d.lib
opencv_shape401d.lib
opencv_stereo401d.lib
opencv_stitching401d.lib
opencv_structured_light401d.lib
opencv_superres401d.lib
opencv_surface_matching401d.lib
opencv_text401d.lib
opencv_tracking401d.lib
opencv_video401d.lib
opencv_videoio401d.lib
opencv_videostab401d.lib
opencv_xfeatures2d401d.lib
opencv_ximgproc401d.lib
opencv_xobjdetect401d.lib
opencv_xphoto401d.lib

其他版本按照自己的版本号更改数字“401d”为自己对应的版本即可(401d意为4.0.1版本的debug模式)。
在这里插入图片描述
在这里插入图片描述
如果你的版本号和我不一样,可以参考我这篇博客最后面使用cmd命令得到文件夹中所有文件名的方法:
链接: https://blog.csdn.net/weixin_41991128/article/details/83864713.

5、获取自己的链接库列表:
在这里插入图片描述
这时打开你对应路径的目录,多了一个0.txt文件,里面存了你这个文件夹里所有链接库名字。

**注意:**记得把0.txt删掉否则对后面有影响,而且0.txt文件里多了0.txt、OpenCVConfig.cmake、OpenCVConfig-version.cmake、OpenCVModules.cmake、OpenCVModules-debug.cmake,复制的时候记得删掉这些多余的内容。
在这里插入图片描述
在这里插入图片描述

八、程序验证

验证代码如下:

#include <opencv2/opencv.hpp>
#include <iostream>
 
using namespace cv;
using namespace std;
 
int main(int argc, char** argv) {
	Mat box = imread("1.jpg");
	Mat box_in_sence = imread("2.jpg");
 
	// 创建AKAZE
	auto akaze_detector = AKAZE::create();
	vector<KeyPoint> kpts_01, kpts_02;
	Mat descriptors1, descriptors2;
	akaze_detector->detectAndCompute(box, Mat(), kpts_01, descriptors1);
	akaze_detector->detectAndCompute(box_in_sence, Mat(), kpts_02, descriptors2);
 
	// 定义描述子匹配 - 暴力匹配
	Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create(DescriptorMatcher::BRUTEFORCE);
	std::vector< DMatch > matches;
	matcher->match(descriptors1, descriptors2, matches);
 
	// 绘制匹配
	Mat img_matches;
	drawMatches(box, kpts_01, box_in_sence, kpts_02, matches, img_matches);
	imshow("AKAZE-Matches", img_matches);
	imwrite("D:/result.png", img_matches);
 
	waitKey(0);
	return 0;
}

结果图:
在这里插入图片描述
代码原创博主已经上传到百度云
链接:https://pan.baidu.com/s/14Qp_moTk-7XUscftKYHQRQ
提取码:67rk

参考:

https://blog.csdn.net/weixin_41991128/article/details/83656543

https://blog.csdn.net/qq_38629044/article/details/85936014

https://blog.csdn.net/weixin_41991128/article/details/84593477

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值