vs2015/2017/2019配置opencv终结问题版教程

vs2015/2017/2019配置opencv终结问题版教程

说明:

1.为方便讲解示例,本教程以vs2015配置opencv3.4.3为例,其他版本请对应替换。
2.VS版本与opencv版本的最佳匹配,请查阅其他资料自行选定。
3.VS版本与opencv的vc12/14/15等的匹配,请查阅相关资料确定。
4.早期的opencv版本(如opencv2.4.9)支持Debug | x86,近期的opencv版本(如opencv3.x)仅支持Debug | x64。

操作环境

windows 10 64位 专业版
opencv 3.4.3:opencv官网
visual studio 2015 专业版

教程

1.安装opencv3.4.3,配置环境变量,添加动态链接库
1.1安装
双击opencv安装包
在这里插入图片描述
选择解压路径(自行设置)
在这里插入图片描述
1.2设置opencv3.4.3的环境变量
A.右键“我的电脑”>属性>高级系统设置>高级>环境变量>系统变量>Path>编辑>新建>浏览
B.找到刚才opencv3.4.3的解压路径
C.添加如下路径(我的是):A:\opencv343\opencv\build\x64\vc14\bin
D.点完所有的“确定”按钮。(至此环境变量配置结束)
在这里插入图片描述
在这里插入图片描述

1.3添加动态链接库
A.在opencv解压文件夹,打开vc14>bin文件夹,找到以下三个文件。
在这里插入图片描述
B.将 opencv_ffmpeg343_64.dll复制到C:\Windows\System32文件夹内;将opencv_world343.dll和opencv_world343d.dll文件复制到C:\Windows\SysWOW64文件夹内

2.新建opencv专用属性表并进行配置
2.1新建空项目
打开vs2015>新建项目>选择win32控制台应用程序,设置项目名称和项目路径>确定>下一步>勾选空项目>完成
在这里插入图片描述
2.2新建opencv专用属性表并配置
A.依次点击:视图>其他窗口>属性管理器
B. 在Debug | 64上右键单击,选择添加新项目属性表
在这里插入图片描述
C.新建名为 opencv3envPropertySheet的属性表
该属性表请单独保存,以后新建opencv项目后,直接添加该表即可(在Debug | 64上右键单击,选择添加现有属性表),无需重复配置
在这里插入图片描述
D.双击opencv3envPropertySheet
在这里插入图片描述
E.配置
包含目录:
A:\opencv343\opencv\build\include
A:\opencv343\opencv\build\include\opencv
A:\opencv343\opencv\build\include\opencv2

库目录:
A:\opencv343\opencv\build\x64\vc14\lib

连接器\输入\附加依赖项:
opencv_world343d.lib
opencv_world343.lib
在这里插入图片描述
3.测试
A.右键单击源文件>点击添加>新建项>选择c++文件(.cpp)>命名test
在这里插入图片描述
B.粘贴如下代码,注意"alpine.jpg"必须放在与test.cpp同一路径(文件夹)下才可以直接用,否则,应加入对应的路径。

#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
using namespace cv;

int main()
{
	Mat srcimage = imread("alpine.jpg");
	imshow("原图", srcimage);

	Mat dstimage;
	blur(srcimage, dstimage, Size(5, 5));
	imshow("均值滤波效果图", dstimage);

	waitKey(0);
	return 0;
}

C.选择x64,运行
在这里插入图片描述
运行结果如下
在这里插入图片描述

对以上安装和配置过程有不清楚的,请查看这篇博客(https://xygeng.cn/post/219.html),作者写的不错。

4.若运行不成功,报错如下中的一种或多种:
无法打开源文件xxx.hpp
无法解析的外部命令
No such file or directory
未定义标识符imread
无法打开源文件xxx.lib
…等
请参照5.解决方法
在这里插入图片描述

5.解决方法
5.1分别查看【包含目录】,【库目录】的继承值是否如下图所示:
【包含目录】
在这里插入图片描述
【库目录】
在这里插入图片描述
5.2若是,则本教程无法解决,若不是,则分别在包含目录和库目录再加入以下目录:

在【包含目录】中加入如下图红框所示目录(来源于正确的 [继承的值]):
$(VC_IncludePath)
$(WindowsSDK_IncludePath)

在这里插入图片描述
添加后,会自动计算得到以下值(在 [计算的值] 中显示)
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
C:\Program Files (x86)\Windows Kits\8.1\Include\um
C:\Program Files (x86)\Windows Kits\8.1\Include\winrt

在【库目录】中加入如下图红框所示目录(来源于正确的 [继承的值]):
$(VC_LibraryPath_x64)
$(WindowsSDK_LibraryPath_x64)
$(NETFXKitsDir)Lib\um\x64

在这里插入图片描述
添加后,会自动计算得到以下值(在 [计算的值] 中显示)
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib\amd64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x64
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\Lib\um\x64

或者直接加入所有正确的 [计算的值],所谓 “正确”,是指同版本配置成功的小伙伴的包含目录和库目录显示的 [计算的值] ,与vs相关的目录请结合自己vs安装目录。

在【包含目录】加入以下值:
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
C:\Program Files (x86)\Windows Kits\8.1\Include\um
C:\Program Files (x86)\Windows Kits\8.1\Include\winrt

在【库目录】加入以下值:
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64
C:\vs\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib\amd64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x64
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\Lib\um\x64

5.3保存后再次运行即可解决或者只剩一点小错误。
若出现报错:找不到opencv_world341d.lib,则在附加依赖项取消勾选继承,这是我之前装opencv3.4.1失败后留下的 “痕迹” 导致的错误。
在这里插入图片描述

6.其他版本的vs和opencv配置时,如出现上述4中的问题,请按照5.2所述方法,分别在【包含目录】和【库目录】加入以下值(针对opencv x64),基本都可以解决。

【包含目录】
$(VC_IncludePath)
$(WindowsSDK_IncludePath)

【库目录】
$(VC_LibraryPath_x64)
$(WindowsSDK_LibraryPath_x64)
$(NETFXKitsDir)Lib\um\x64

若仍然不能解决,请查看已配置成功的小伙伴的【包含目录】,【库目录】的正确的【继承的值】/【计算的值】,然后对应加入即可。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值