作为萌新最初听说到opencv,以为是一个集成开发环境IDE。后来因为毕设原因不得不去使用opencv,才了解到OpenCV是一个广受欢迎的开源计算机视觉库 ,它提供了很多函数,实现很多计算机视觉算法,从最基本的滤波到高级物体检测皆有涵盖。换言之,opencv只不过是一个写好的库,方便在编程的时候对视觉数据进行处理。

网上有各式各样的配置方式,但是大部分都没说每一步做法的原因 ,导致opencv版本不大一样的话,很多人就把所有教程都试个遍,结果还不一定配成功。我个人是很反感这种方式的,所以下文会解释做每一步的原因,了解了做每一步的必要性后,配置不同版本的opencv环境就游刃有余了。

一、下载opencv库

百度搜一下就能找到官网https://opencv.org/,在releases选项页找到下载的地方。Documentation是程序相关说明文档,Sources是opencv的源码,Win pack与Sources的区别是,Win pack不仅包含了源码,还包含了利用源码编译后的库。

下载Win pack解压后得到文件目录如下:

sources文件夹下的是源码,配置环境的话是用不上的,有用的是源码经过编译后的库,位于build文件夹下。

二、开始配置环境

官方只提供了部分语言环境的编译库,一开始我是想着在devc++上配来着,毕竟devc++轻量一点,操作起来也方便简单一点。后来发现官方根本没有提供这个编译库,需要自己用cmake拿源码来编译,查了下好像有点麻烦,索性在VS2017下配算了,官方在opencv4.0.1有提供VS2017(VC15)的编译库,而且只提供了64位版的。

下面我们来看用一个外部导入的库时,需要怎么配置。

以C++为例,编译时需要用到库的头文件(用于include),一般是.h之类的文件;链接时用到静态链接库(.lib),运行时用到动态链接库(.dll或.exe之类)。通俗地说,静态链接库编译后会整合到程序中,而动态链接库不会整合到程序中。动态链接库更像是给运行提供环境,就像平时装游戏时可能要先装什么VC、DX之类环境软件才能玩。

配置系统环境变量

正如前面所说,动态链接库是为运行时提供环境,所以程序在运行时怎么知道动态链接库在什么位置呢。因此我们需要将动态链接库的位置告诉操作系统,方法就是设置系统变量。动态链接库位于build\x64\vc15\bin文件夹下(bin是指二进制文件,说明已经是一个相对独立的程序),于是我们在此电脑属性->高级系统属性->环境变量->系统变量Path下增加上述路径。

这个地方需要填绝对路径,我把我解压的opencv放在D盘的opencv文件夹下,因此具体路径还是要参照你自己文件所在的位置。盲目抄我的路径一般都会出错。

配置VS2017环境

配置编译环境无非是让编译器能找到引用头文件以及相关的静态链接库,引用头文件在build\include\opencv2文件夹下,静态链接库在build\x64\vc15\lib文件夹下,下面所配置的路径都是基于这两个路径。

考虑到不同的工程、项目等可能会用到不同的库,VS2017已经将工具=》选项=》项目和解决方案下的全局VC++目录改成了属性页,每个project项目可以有自己的属性页,甚至各个模式下都可以有自己的属性页。点击 视图=》其他窗口=》属性管理器 打开属性管理器,可以看到如下:

在这里,我的配置方式与网上其他文章所介绍的不太一致。他们的方法是双击Microsoft.Cpp.x64.user这一个属性页去修改,这样就可以一劳永逸,以后都不用再配环境。按照他们的方法配置出现的一个问题就是会导致release模式或debug模式下报异常,导致程序无法正常执行,如下:

其原因是附加依赖项中,他们把带d后缀和不带d后缀的.lib静态链接库写在了一起,带d是属于debug模式下要使用静态链接库,不带d的是release模式下要使用的静态链接库。VS只会取写在前面的静态链接库,因此会导致debug或release模式之一不可用(取决于你把哪个写在前面)。查阅了很多博客以及stack overflow的很多回答,回答基本上都是说这是opencv的一个BUG,其实我个人感觉更像是VS的一个BUG。

另一方面,Microsoft.Cpp.x64.user实际上是位于C:\Users\Admin\AppData\Local\Microsoft\MSBuild\v4.0\下的一个属性页文件,所有项目都会默认使用他,这不太符合项目独立性的设计初衷。

下面是我的一个配置方法。

在Debug | x64处右击新建一个新的属性表opencv_property401d_x64(名字随便起),双击新建的属性表,开始配置包含文件和静态链接库。

在包含目录处配置包含的头文件路径:

在库目录处配置静态链接库位置:

配置附加依赖项:

特别说明一下,在配置附加依赖项时需要先查看,静态链接库文件夹下有什么文件,如我的opencv4.0.1静态链接库文件夹D:\opencv\build\x64\vc15\lib下有如下文件。

我们只关注.lib文件,带d结尾的是用于debug模式的静态链接库,不带d结尾的是用于release模式的静态链接库,4.0.1版本比较简洁只剩两个.lib文件了,老版2代左右的opencv有一大堆静态链接库,所以在附加依赖项处要写一大堆。因为我们这里配置的是Debug | x64的属性表,所以我们只把带d结尾的.lib文件写进去。总而言之,此处附加依赖项填写静态依赖库文件夹下所有带d结尾的.lib文件路径,静态依赖库文件夹在4.0.1版本是build\x64\vc15\lib,具体路径可能会因版本而异。

再次说明,上面所填的所有具体的绝对路径一定要根据自己电脑上相关文件的路径去写,不要盲目抄我的。

最后,在Release | x64处右击新建一个新的属性表opencv_property401_x64,双击新建的属性表,配置方法与上面一致,唯一的区别在于,附加依赖项中填写的是所有不带d结尾的.lib文件路径。

配置完成后的属性表结构如下:

这些属性结构表将会应用于其对应的模式,opencv_property401_x64用于release的64位模式,opencv_property401d_x64用于debug的32位模式,因为没有官方提供32位模式的,所以32位下没有对属性页进行设置,因此也不能使用32位模式进行编译。

每种模式的属性表工作方式类似于CSS中的层叠方式,双击项目或Debug | x64之类的也可以进行属性设置,但这类属性页是存储于项目的工程文件中的,不是独立的属性表文件。上述配置完成后的opencv_property401_x64和opencv_property401d_x64是外部的独立属性表文件,建议进行备份保存,以后遇到需要使用opencv库的项目时,直接导入这两个属性表文件即可。

三、最终测试

简单写一个显示图片的C++程序进行配置测试。

图片如下:

代码如下:

#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>using namespace cv;int main()
{// 读入一张图片(小熊猫)Mat img = imread("picture.png");// 创建一个名为 "小熊猫"窗口namedWindow("小熊猫");// 在窗口中显示小熊猫imshow("小熊猫", img);// 等待6000 ms后窗口自动关闭waitKey(6000);return 0;
}

把图片放在项目目录下,命名为picture.png,测试运行。

注意debug x64模式和release x64模式都测试下,确保没有问题。

四、一个小bug

在我测试的时候遇到过报这样一个异常。

一开始还以为是配环境出了问题,最后发现把我的搜狗输入法切换成系统默认输入法这个问题就解决了。这个输入法已经在我的程序生涯坑了我不止一次了,我也在想为毛我还没卸这个输入法。

五、参考文章

https://blog.csdn.net/poem_qianmo/article/details/19809337

http://www.opencv.org.cn/forum.php?mod=viewthread&tid=33549

在VS2017(VC15)上配置opencv4.0.1环境相关推荐

  1. VS2017配置OpenCV4.0(Win10环境)

    之前一直在使用VS2015,虽然看到VS2017发布了,但由于手头事情比较多,就没有尝试使用,最近突然看到Opencv4.0-alpha发布了,新版本中加入了很多人工智能和机器学习的内容,所以决定系统 ...

  2. Ubuntu 18.04安装OpenCV4.0和环境配置

    文章目录 1 安装前准备 1.1 安装依赖 1.2 下载源文件 2 安装过程 3 OpenCV配置环境 3.1 pkg-config环境 3.2 动态库环境 3.3 python-opencv环境 4 ...

  3. 【opencv】ubuntu14.04上编译opencv-4.0.1 + opencv_contrib-4.0.1

    1.要求 编译器版本:c++11 cmake版本:3.5.1 2.安装camke 2.1 官网下载:https://cmake.org/download/ 选择:Linux x86_64 cmake- ...

  4. CUDA和Tensorflow安装问题,包括如何在一台机器上配置多个CUDA环境和Tensorflow版本

    CUDA和Tensorflow安装相关问题 安装CUDA和Tensorflow一般流程 1. 查看显卡可安装的CUDA版本 2. Tensorflow版本以及对应CUDA.cuDNN版本如何查看 Py ...

  5. mac配置vue3.0开发环境+首个地图应用

    目录 前言 正文 1.环境 1.1 vscode安装 1.2 npm安装 1.3 vue-cli安装 2.安装Vue3.0高版本 3.第一个vue程序 总结 前言 以前用vue写过一个小小demo,没 ...

  6. Ubantu18.04上配置cuda10.0和cudnn

    Ubantu系统和显卡驱动是小伙伴帮我安装的,cuda10.0和cudnn是我自己安装的,所以在此只说明cuda10.0和cudnn的安装过程~ 一.安装cuda 在官网(链接1)下载安装文件: 选择 ...

  7. Win10系统VS2015上配置YOLOv3运行训练环境(包含OpenCv3.40安装配置,cuda9.2安装配置)

      前言 第一次写博客,迟迟不敢下笔,只怕在言语之间有所纰漏.在下区区学生一枚,在此斗胆写下在win10上搭建yolo_v3环境的过程与感受.博文部分安装配置过程将会引用其他博文,如有侵权,通知立删. ...

  8. pytorch 支持amd显卡吗_AMD平台上配置PyTorch+Apex开发环境

    手上有2台AMD平台的机器,用的N卡做深度学习开发机.其中一个是Ryzen 3500X ITX+2070,另一个是FX8350 990FX 3卡平台+1080和P106. 这两个机器其实都挺好用的,即 ...

  9. pytorch安装到一半中断_AMD平台上配置PyTorch+Apex开发环境

    手上有2台AMD平台的机器,用的N卡做深度学习开发机.其中一个是Ryzen 3500X ITX+2070,另一个是FX8350 990FX 3卡平台+1080和P106. 这两个机器其实都挺好用的,即 ...

  10. python调用按键精灵插件_开发中IDE的选择?如何在VsCode上配置CC++,Java,Python环境...

    前言 工欲善其事必先利其器,这也是老生常谈的事情了.在做日常开发中,让我感受到一个顺手的开发工具的重要性.截至目前对于不同语言自己也使用过很多开发工具,有一些简单的编辑器例如:notepad++.Ed ...

最新文章

  1. AI领域的人才短缺,原因是什么?该如何解决?
  2. Kafka压力测试(写入MQ消息压测和消费MQ消息压测)
  3. [moka同学笔记]redis练习Demo
  4. 我之理解---计时器setTimeout 和clearTimeout
  5. php改密后joomla无法登陆,php – Joomla 3.3禁用“重置密码”功能
  6. HttpClient中异步方法的同步调用
  7. HttpClient上传下载文件
  8. 称重指示器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  9. 查看环境列表_西门子COMOS软件开发定制学习8-查询列表间的数据交互
  10. 学习自动驾驶技术 学习之路_一天学习驾驶
  11. c语言一本书的页码从自然数1开始顺序编码,算法设计与分析 1-1 统计数字问题(C语言版)...
  12. 近两年最快上市房企,祥生控股究竟是在控制负债,还是饮鸩止渴?
  13. 华为:鸿蒙 Harmony OS 明年将正式登陆欧洲
  14. 生产日期当天算一天吗,保质期算当天吗 保质期最后一天算过期吗
  15. GitHub 代码托管平台提交代码时 emoji 表情的使用
  16. UEditor富文本编辑器不显示问题
  17. linux查询主机信息命令,用来获取Linux主机信息的5个常用命令
  18. 5G凭什么比4G快那么多?
  19. android中的动画全解析
  20. pandas如何快速添加一行?

热门文章

  1. Android 自动接听来电
  2. 短信接口哪家好 凌凯短信接口
  3. Java课程设计报告
  4. Linux系统下卸载jdk的步骤
  5. [渝粤教育] 四川师范大学 信息素养:效率提升与终身学习的新引擎 参考 资料
  6. C语言源代码系列-管理系统之物业费管理
  7. fortran 学习记录2
  8. STM32最小系统使用FlyMcu烧写步骤
  9. 小众却非常好用的文件同步备份工具-FileYee
  10. 求助ET服装打版软件