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

最近想好好认真学习一下opencv4.0,需要用到contrib扩展库,配置完记录下。 先写一下版本信息:opencv4.0.1,vs2017和 win10。

其他opencv版本安装和配置原理一致,自己需要根据实际情况进行变通,祝大家在机器视觉的道路上越走越远,哈哈哈哈哈哈哈。

大家第一次安装opencv的时候一定要一定要一定要认真看一遍教程,很多错误是自己不认真仔细导致的,特别看安装过程的注意事项,等一定了解和熟练后再总结一套自己的教程,这样对自己以后安装东西有很大的帮助

本人github

准备工具

cmake、vs2017、opencv4.0.1、opencv_contrib-4.0.1

一、首先安装cmake

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

下载安装cmake-3.13.2-win64-x64.msi,默认安装。

二、安装VS2017

这里直接在微软官网下载即可。链接: https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes

 其中三个版本都可以选,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 编译 

windows安装opencv4.1.1过程中ffmpeg、ippicv、face_landmark_model下载出错解决办法:https://blog.csdn.net/fengxinzioo/article/details/104919888

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 doneGenerating 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时的路径进行修改。 
  5. 环境变量配置好后,一定要重启系统!!!!

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、获取自己的链接库列表:

win+r调出“运行”窗口并输出cmd
输入:cd /d D:\opencv4.0.1\opencv\CMAKE_opencv4.0.1_vs2017_x64\install\x64\vc15\lib 回车 (填自己的路径)
输入:dir /b *.lib *>0.txt 回车 

 这时打开你对应路径的目录,多了一个0.txt文件,里面存了你这个文件夹里所有链接库名字。

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

编译好的opencv dll和lib库百度网盘:

链接:https://pan.baidu.com/s/1nyIecUUXmgtZQgy-7cIrfw 
提取码:noww 

八、程序验证

验证代码如下:

#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

  • 24
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 90
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 90
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值