【opencv安装和配置】(win10+vs2017+opencv4.0.1+opencv_contrib-4.0.1+永久配置)

前言

  • opencv分为两个模块,一般只要使用msi的版本,当要使用【SURF】和【SIFT】等涉及专利的函数是就需要配置和下载opencv_contrib的版本。这个版本配置起来若不知道流程,配置起来会异常麻烦(其实你知道流程也会出现很多的错误)——为了配置这个扩展包,作为初学者的我为了顺利的安转上它,还重装了一遍系统,用了整整两天的时间。有好多次就想半途而废,可还是慢慢的安装完成了。

教训

作为一个要从事编程行业的自己来说,太过与急躁了,慢慢的安装成功,却不能去等待一会。总是喜欢去删一些文件(对于一些软件来说这是无法挽回的),结果呢——只得一次又一次地重装系统。总之在这里,希望自己和看到这篇文章你可以内心平稳的去除理事情。因为回想起来,其实安装这个扩展版本也是挺简单的;

正文

在这里我会把自己遇到的问题以及解决方案都详细的写出来

  • 有 opencv版本的下载,opencv_contrib版本的下载、配置。CMAKE的下载和运用等。
废话少说,开始了

1.opencv4.0.1的下载

官网链接: https://opencv.org/releases.html
找到opencv-4.0.1(当然你也可以选择其他版本,流程应该都是一样的)点击window
然后它转到一下网站
等待五秒后就会跳出这个窗口,点击保存就好了。下载完成后打开exe文件
在这里插入图片描述
安装就OK了;

2.opencv_contrib下载

下载链接: https://github.com/opencv/opencv_contrib/releases

在这里插入图片描述下载好解压就好了,最好和opencv4.0.1的解压包放在一个目录里

3.CMAKE的下载

官方地址 https://cmake.org/download/
在这里我们选择下载安装cmake-3.13.2-win64-x64.msi.
不会安装的朋友可以看一下这个https://jingyan.baidu.com/article/da1091fb645ab4027849d6bc.html 挺简单的
安装的时候,可能有些朋友会遇到安装不了的情况,
应该都是管理员权限的问题
可以在搜索栏 输入cmd 以管理者身份运行,然后在命令框里输入,安装包的路径和文件名及其类型。例:F:\cmake-3.13.2-win64-x64.msi 然后按回车键。

4.vs2017的下载

这个网上的教程和资源都很多,但建议大家下载一个professional的版本.

5.CMAKE配置扩展包(重头戏)

1、打开CMake,下图第一个红框输入Opencv(我的是opencv4.0.1)的sources目录(注意:不是opencv_contrib的目录,原来自己opencv的目录);第一个红框输入你自定义的输出目录(随意命名,最好要一目了然,因为它使我们存储扩展包的地点,很重要的)。最后点左下角的Configure
在这里插入图片描述2、点击完 Configure后会出现下图提示,点击确认后就ok了
在这里插入图片描述3、然后选择对应vs的版本,64位系统选择Win64,默认的是Win32
在这里插入图片描述在这里插入图片描述在这里插入图片描述
5、要是如上述红色,需要再次单击 Configure直到不出现红色为止则完成。
在这里插入图片描述

6、完成上述后找到OPENCV_EXTRA_MODULES_RATH一项,添加你刚刚解压的opencv_contrib中的modules目录,其中要把OPENCV_ENABLE_NONFREE(下图红框上面一行)选上,最后点击Generate开始编译。记住这是是两个步骤:1、填写目录。2、勾选目录上一行! ==这两项缺一不可以,不然后面调试的时候,会出现许多错误导致配置失败!
注意路径不要复制,需要通过cmake来选择路径!

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

6. VS2017 编译

1、使用VS2017打开刚刚的“OpenCV.sln”文件,会反应一段时间如下图所示:

在这里插入图片描述

2、然后如图所示点击“生成—>重新生成解决方案”,这得等一段时间 顺利完成后的图片如下

在这里插入图片描述

如果没出现错误的小伙伴直接跳过这里就好,直接到第3步

  • 在这里可能会出现一些失败的问题,因为OpenCV 4版本的进行安装,在此之前要做一些小的处理,就是关于boostdesc和vgg文件缺失导致的编译失败问题。
  • 首先我们要进入到opencv_contrib-4.0.1/modules/xfeatures2d/src目录下,将我百度云盘中的文件boostdesc+vgg_generated.rar解压后的文件放入。
    然后进入到opencv-4.0.1/modules/features2d/test目录下,将我百度云盘中的文件test_hpp.rar中的文件,解压后放入。
    百度云链接链接:https://pan.baidu.com/s/1pChoUQotgfkimKa9CELjyw
    提取码:yjhw
    然后还要修改一些cpp的头文件(因为这些头文件也不知道怎么回事,有些会出现无法包含***的问题,还有可能会出现无限套用的死循环,然后导致编译失败)
    这里切记不能急躁 ——因为我在这里卡了整整一天;
    test_descriptors_invariance.cpp文件修改如下:
#include "test_precomp.hpp"
#include "test_invariance_utils.hpp"//修改后
#include "test_descriptors_invariance.impl.hpp"//修改后

test_detectors_invariance.cpp文件修改如下:

//test_detectors_invariance.cpp
#include "test_precomp.hpp"
#include "test_invariance_utils.hpp" //修改后
#include "test_detectors_invariance.impl.hpp"//修改后

可能有些人的出错地方不一样,也应该都是头文件出错或者就是缺少一些文件,可以根据错误详情进行百度

3、“解决方案资源管理器—>CMakeTargets—>INSTALL—>仅用于项目—>仅生成INSTALL(B)”一会就好

在这里插入图片描述
完成后
在这里插入图片描述

4、最后到自定义的文件夹确认一下,找到install文件夹,进去查看里面的内容(如下图,注:对于后边配置环境,install文件夹作用就像配置opencv4.0时的build文件夹一样):

在这里插入图片描述

7.环境配置

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

8.vs2017配置(包含一次性配置)

1、打开VS2017新建一个空项目
2、把Debug 换成x64
3、然后找到属性管理器 ,如下图所示:
在这里插入图片描述

4、创建属性表,如下图所示
在这里插入图片描述
5、打开刚才建好的属性表(双击就可以)
在这里插入图片描述
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

在库目录中添加:F:\opencv-build\install\x64\vc15\lib
3.在通用属性—>链接器—>输入—>附加的依赖项中添加:
依赖项:

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_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_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

应该每个版本的依赖项不一样。
获取依赖项的方法:

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、OpenCVConfig.cmake、OpenCVConfig-version.cmake、OpenCVModules.cmake、OpenCVModules-debug.cmake,复制的时候记得删掉这些多余的内容。
在这里插入图片描述
在这里插入图片描述

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,复制的时候记得删掉这些多余的内容。

8.一次性配置

这样就在文件夹里生成了一个props文件,每次创建opencv项目时,直接在属性目录中添加就行
在这里插入图片描述

9、程序验证

#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://blog.csdn.net/fengxinzioo/article/details/88767399

https://blog.csdn.net/qq_27971677/article/details/90400118#OpenCV_183

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值