博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win10+vs2017+opencv4.0.1+opencv_contrib-4.0.1详细教程
阅读量:2051 次
发布时间:2019-04-28

本文共 5879 字,大约阅读时间需要 19 分钟。

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

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

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

准备工具

cmake、vs2017、opencv4.0.1、opencv_contrib-4.0.1

一、首先安装cmake

官方地址

下载安装,默认安装。

二、安装VS2017

这里直接在微软官网下载即可。链接: 

 其中三个版本都可以选,Community 2017是免费社区版本,Professional 2017和Enterprise 2017是付费版,功能好像没有区别,我这里选择的是Professional版本。

付费版可以使用密匙激活,这里提供两个密匙,如果不能用了就网上找,很多的:
Professional 2017:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH
Enterprise 2017:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

三、opencv_contrib下载安装

1、下载链接: . 

2、选择你的opencv对应的contrib版本,例如我装的是opencv4.0.1,对应就下载opencv_contrib-4.0.1.zip。下载完成之后直接解压即可,留着cmake使用。 

opencv_contrib-4.0.1.zip解压完如下图:

四、提取opencv4.0.1

1、Opencv官网:

 

2、提取过程如下: 

五、 CMake 编译 

windows安装opencv4.1.1过程中ffmpeg、ippicv、face_landmark_model下载出错解决办法:

1、打开CMake,下图第一个红框输入Opencv(我的是opencv4.0.1)的sources目录(注意:不是opencv_contrib的目录,原来自己opencv的目录);第一个红框输入你自定义的输出目录。最后点左下角的Configure

2、点击完 Configure后会出现下图提示,点击确认后就ok了

3、然后选择对应vs的版本,系统选择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.libopencv_bgsegm401d.libopencv_bioinspired401d.libopencv_calib3d401d.libopencv_ccalib401d.libopencv_core401d.libopencv_datasets401d.libopencv_dnn401d.libopencv_dnn_objdetect401d.libopencv_dpm401d.libopencv_face401d.libopencv_features2d401d.libopencv_flann401d.libopencv_fuzzy401d.libopencv_gapi401d.libopencv_hdf401d.libopencv_hfs401d.libopencv_highgui401d.libopencv_imgcodecs401d.libopencv_imgproc401d.libopencv_img_hash401d.libopencv_line_descriptor401d.libopencv_ml401d.libopencv_objdetect401d.libopencv_optflow401d.libopencv_phase_unwrapping401d.libopencv_photo401d.libopencv_plot401d.libopencv_reg401d.libopencv_rgbd401d.libopencv_saliency401d.libopencv_shape401d.libopencv_stereo401d.libopencv_stitching401d.libopencv_structured_light401d.libopencv_superres401d.libopencv_surface_matching401d.libopencv_text401d.libopencv_tracking401d.libopencv_video401d.libopencv_videoio401d.libopencv_videostab401d.libopencv_xfeatures2d401d.libopencv_ximgproc401d.libopencv_xobjdetect401d.libopencv_xphoto401d.libopencv_aruco401d.libopencv_bgsegm401d.libopencv_bioinspired401d.libopencv_calib3d401d.libopencv_ccalib401d.libopencv_core401d.libopencv_datasets401d.libopencv_dnn401d.libopencv_dnn_objdetect401d.libopencv_dpm401d.libopencv_face401d.libopencv_features2d401d.libopencv_flann401d.libopencv_fuzzy401d.libopencv_gapi401d.libopencv_hdf401d.libopencv_hfs401d.libopencv_highgui401d.libopencv_imgcodecs401d.libopencv_imgproc401d.libopencv_img_hash401d.libopencv_line_descriptor401d.libopencv_ml401d.libopencv_objdetect401d.libopencv_optflow401d.libopencv_phase_unwrapping401d.libopencv_photo401d.libopencv_plot401d.libopencv_reg401d.libopencv_rgbd401d.libopencv_saliency401d.libopencv_shape401d.libopencv_stereo401d.libopencv_stitching401d.libopencv_structured_light401d.libopencv_superres401d.libopencv_surface_matching401d.libopencv_text401d.libopencv_tracking401d.libopencv_video401d.libopencv_videoio401d.libopencv_videostab401d.libopencv_xfeatures2d401d.libopencv_ximgproc401d.libopencv_xobjdetect401d.libopencv_xphoto401d.lib

其他版本按照自己的版本号更改数字“401d”为自己对应的版本即可(401d意为4.0.1版本的debug模式)。 

如果你的版本号和我不一样,可以参考这篇博客最后面使用cmd命令得到文件夹中所有文件名的方法:

链接: .

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 
#include
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
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
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 

参考: 

转载地址:http://arzlf.baihongyu.com/

你可能感兴趣的文章
稻草人手记
查看>>
第一次kaggle比赛 回顾篇
查看>>
leetcode 50. Pow(x, n)
查看>>
leetcode 130. Surrounded Regions
查看>>
【托业】【全真题库】TEST2-语法题
查看>>
博客文格式优化
查看>>
【托业】【新托业全真模拟】疑难语法题知识点总结(01~05)
查看>>
【SQL】group by 和order by 的区别。
查看>>
【F12】谷歌浏览器--前台效果可以在不访问服务器的前提下直接改样式看效果是否是预期值。...
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>
python中xrange和range的异同
查看>>
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>