Win10 VS 安装 OpenCV 教程 (终结篇)
前言:刚开始是不打算写这篇博客的,但是我最近为了完成对老师布置的区域生长算法,强行要配置一波opencv,因为换了电脑,所以选择了有黑黑主题酷酷的VS2017,但无奈网上的博客关于vs2017配置Opencv不够全(vs2010配置opencv的倒是贼多!),我当时是看了将近10篇文章才配置成功,所以在此我来从一个新入坑的角度来说一下怎么完整的配置一个OPencv!下面就分步来进行说明吧!
注意:不是博主这个版本的opencv本教程也是实用的,只需要改一点点东西就行,后面会进行提示!
第一步:下载opencv安装包
下载的途径有三种:
1、官网下载
在此,说明一下,没有必要去根据博主 的博客下载与博客相应的版本,其实只需要改一点点东西即可,后面进行说明,官网下载真的是贼头大,首先下载好好的突然说下载中断,而且无法恢复,此外,还慢,毕竟外网,没有办法。一个安装包大概100多M,而下载速度只有50多K(校园网20K,对面宿舍宽带50K),所以最后我实在无法忍受,已经失败了N次,时间紧,就没必要在这一棵树上撞死。
但是网好的朋友也可以试试,在此我给出官网的网址,大家可以根据自己情况选择合适的版本(我的是3.4.1版本)
网址:https://opencv.org/releases.html#
2、网上资源
靠谱的是CSDN等博主提供的安装包,但是是要C币的,我一般不会充值的,所以如果条件允许的话可以选择这个
https://download.csdn.net/download/yu2439/10369150?utm_source=bbsseo(其中的一个网址)
还有一个建议就是不要去尝试在一些钓鱼网站去下载opencv,我上回为了下载一个matlab**版,虽然一路小心翼翼,最终下载了将近7、8个捆绑软件,连卸载时也给我加两个。。。。
3、身边同学或者一起搞编辑的朋友们啊
我的opencv就来自我对面宿舍的同学,他在官网下载成功了,直接用U盘拷过来用,还不是美滋滋,在此我给个百度网盘链接:opencv3.41
二、解压下载文件
双击下载好的或者拷好的安装包,选择解压路径后点Extract即可完成解压,解压后会自动生成一个opencv的文件夹(图2)
图3中的文件夹如果配置环境比较多的筒子们还是非常眼熟的。
第三步:配置系统变量(WIN10)
1、找到此电脑(图4)
2、右键->属性->高级系统设置->环境变量
找到系统变量中的path变量,双击它,点击新建,将你解压的opencv文件夹中的***opencv\build\x64\vc14\bin路径添加到当中。这里我是选择了vc14这个子文件夹,也可以选择15,但后面要做出相应调整,所以不妨就vc14咯!
注意:路径粘贴后记得点确定,并在外面点能点的确定全点选一遍!
详细操作可看下图!
以上完成了系统变量的配置,其实不是特别复杂,说简单点就是拷贝个路径
第四步:相关文件的配置
注意:网上很多教程没有这一步,会报那种找不到dll文件的错误,是因为没有将opencv里面的相关文件复制到C盘中的文件夹里面
操作方法:将bin目录下面的opencv_world341.dll和opencv_world341d.dll文件复制到C:\Windows\SysWOW64这个文件夹里面即可
将bin目录里面的opencv_ffmpeg341_64.dll复制到C:\Windows\System32这个文件夹里面(详细看图)
如果是opencv其他的版本,把对应的dll文件移动到上述两个C盘文件夹即可!
第五步:进入VS2017配置属性管理器进行相关配置
1、新建一个项目,我这里建了一个空项目
2、进入属性管理器,菜单栏->视图->其他窗口->属性管理器
3、对Debug|X64进行配置,右键Microsoft.Cpp.x64.user,点击属性
4、这里我们对属性中的 VC++目录->包含目录和VC++目录->库目录进行添加相关路径,对 链接器->输入->附加依赖项进行添加相关路径
5、包含目录中加入
F:\OPENCV\opencv\build\include
F:\OPENCV\opencv\build\include\opencv
F:\OPENCV\opencv\build\include\opencv2
库目录中加入
F:\OPENCV\opencv\build\x64\vc14\lib
6、链接器->输入->附加依赖项中加入
opencv_world341d.lib
注意:博主后面了解到release|X64的配置为可选项,后面也有热心读者提醒,所以下面的这一步可以不做,因为编译时只用到了debug,release是发布程序时才会用到。
//7、对Release|X64进行配置,右键Microsoft.Cpp.x64.user,点击属性
//链接器->输入->附加依赖项中加入
//opencv_world341.lib
注意:如果是opencv其他版本,只需要将将上述的依赖项文件稍作修改即可;eg:如果是opencv版本3.4.0,只需要将dll名字改为opencv_world340d.lib即可,依次类推!
第六步:勾选微软符号服务器(此步为可选项)
其实到上一步已经配好了,但是到了关键时候VS2017总是说我少各种dll文件,百度上面说不用理这种错误,可以选择勾选微软符号服务器来下载缺失的dll文件
操作步骤:左键调试->选项->常规 勾选启动源服务器支持
符号那一项勾上微软符号服务器
注意:可以用一个文件夹来缓存下载的dll文件,只是第一次加载,不用担心。或者,你也可以等加载完了之后,再把之前勾选的取消掉,也没有问题。 我建了一个文件夹(文件夹是我自己建的),后面发现它下载了很多pdb文件!
注意:到上面所有工作,opencv已经配完了,注意解决方案平台那一栏要换成X64(因为我们一直都在配X64)
第七步:测试环节!
注意:由于很多人遇到图片无法输出的情况,在此特地添加一条需要注意的事项,读入图片路径时有两种方法。
(1)绝对路径
eg:Mat img = imread("F:\\suoxiaotu\\poyanghu缩小图.tif");
注意这个地方的双斜杠很重要,直接弄过来的图片途径是只有一个斜杠的,两个斜杠的原因应该是第一个斜杠是转义字符。
(2)图片路径
eg:Mat img = imread("poyanghu缩小图.tif");
这个地方有两点需要注意:第一个就是大家的图片格式一定要分清楚,建议自己右键查看目标图片的属性,另一个就是要注意这样做的前提条件就是你的图片就在你所建工程的目录下。不然会显示找不到图片。
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 读入一张图片(poyanghu缩小图)
Mat img = imread("F:\\suoxiaotu\\poyanghu缩小图.tif");
// 创建一个名为 "图片"窗口
namedWindow("图片");
// 在窗口中显示图片
imshow("图片", img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
return 0;
}
输出:
以上,配置完成!
(2019年2月6号更新)可以说,博主这一篇文章就解决了我绝大多数问题!唯一补充的一点是,我用博主的方法,在运行代码的时候,发现waitKey(6000);这个函数结束后,其申请的内存没有正常释放,所以会引发异常。所以需要在这句的后面加上destroyAllWindows();实现内存的手动回收 @jerryNYX
(2019年3月4号更新)加载符号遇到问题的朋友:“第六步勾选微软服务器”可以省略,把勾取消掉就能运行了,不然会卡住。希望对大家有帮助。@æ°å:
(2019年4月22号更新) 谢谢博主,除了release部分我没有配置以外,其他部分按照博主的方法配置成功了。谢谢。@blackkkkk
(2019年5月8日更新)小白成功了!非常感谢楼主!我遇到的问题“无法打开PDB文件”或者是“图像显示出来是灰色”的可能解决方法是:Debug|X64只放opencv_world341d,Release|X64只放opencv_world341 @https://me.csdn.net/weixin_40288785