IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Visual Studio 2019 & OpenCV 4.52 开发环境配置 (一劳永逸+原理解释) -> 正文阅读

[人工智能]Visual Studio 2019 & OpenCV 4.52 开发环境配置 (一劳永逸+原理解释)

Visual Studio 2019 & OpenCV 4.52 开发环境配置 (一劳永逸版)

0. 前言

笔者在配置OpenCV的过程中参考了不少资料,包括书籍和博客等。由于版本更迭导致配置方法略有差异,并且有些教程简略部分步骤,因此走了一些弯路。在此将配置过程记录下来,与大家分享,也方便自己日后查看。

本教程不仅会手把书教大家一步步配置,还会根据自己的理解,对每一步的操作,给出具体原因。

本教程开始前,笔者认为大家的VS2019 和 OpenCV 都已经安装或解压完成,未完成以上两个软件安装的,请先参考其他教程完成安装再进行下一步。

1. 添加环境变量(把OpenCV运行库加在C盘对应目录)

操作:
(1) 此电脑(win10)->右键->属性?->高级系统设置(左侧)->环境变量(右下角),进入到如下环境变量设置界面:
环境变量设置界面
(2)双击上图中的Path,打开如下图环境变量编辑界面。按照图示步骤,添加OpenCV的bin目录。
(注意,这个版本的OpenCV解压包中已经不包含x86的32位文件,即,只有x64的64位文件。或许通过自己编译源文件可得32位文件,但笔者尚未尝试)。
编辑环境变量
备注:由图可知,我的OpenCV解压在“E:\Program Files\opencv\”目录下,环境变量要根据自己解压文件所在目录设置。

【本操作的目的】添加环境变量是为了把OpenCV软件运行所需要的库添加在“C:\Windows\System32”和“C:\Windows\SysWOW64”中,主要是一些**.dll文件,这样我们后期编写的软件在运行时就会依赖这两个文件夹中的库文件(动态库)。如果不添加环境变量,则每次新建一个OpenCV项目,都需要将所需库文件添加到项目的对应目录中(一般来说是*.exe文件所在*目录)。

2. 在VS中配置(指定:头文件目录,lib库目录,lib库文件)

相信学习OpenCV的同学大概率是C++编程老手,但为了教程的完整性,仍然对每一步进行详述。
(1)首先新建一个C++空项目,点击下一步(新建空项目而不是其他项目,是为了不引入任何其他项目带来的繁琐配置)。
在这里插入图片描述

(2)项目目录以及项目名称随意指定即可,以为配置完成以后这个项目就没用了,可以删除。
在这里插入图片描述
(3)新建项目完成后,进入如下界面。在菜单栏,视图->其他窗口->属性管理器,打开属性管理器。
在这里插入图片描述
(4)如前所述,我们用的是x64的库文件,所以展开“Debug|x64”,选中步骤2所示属性表列表文件,右键,选择步骤3的“添加现有属性列表”。
在这里插入图片描述
(5)上一步后,跳到这个属性列表文件所在的目录(C:\Users\admin\AppData\Local\Microsoft\MSBuild\v4.0),由文件目录可知,这个文件是一个公用的文件,新建的项目默认都会使用这个文件。如果我们修改这个文件,可能会导致日后别的项目出现问题,因此我们复制一个“Microsoft. Cpp x64user. props”,重命名为“Microsoft.Cpp.OpenCV.x64d.user.props”,在项目中移除“Microsoft. Cpp x64user. props”,添加“Microsoft.Cpp.OpenCV.x64d.user.props”,这样我们后续的设置就会体现在这个文件中,后续新建项目后,也是移除默认配置列表文件,添加我们设置的新文件即可。
在这里插入图片描述
(6)在属性管理器中双击我们新添加的属性列表文件,即,“Microsoft.Cpp.OpenCV.x64d.user.props”。打开属性管理器,进行3项最后的设置:
1)如下图,添加包含目录,“E:\Program Files\opencv\build\include”和“E:\Program Files\opencv\build\include\opencv2”。其实“E:\Program Files\opencv\build\include”目录下没有文件,只有“E:\Program Files\opencv\build\include\opencv2”一个文件夹,包含它的原因是有些函数是通过“……\opencv2”索引的。不添加它的话编译的时候会在“……\opencv2\opencv2”下找对应的函数,这显然是不对的。这里可能有点绕,读者可以在环境单间完成后,返回来把“E:\Program Files\opencv\build\include”删除,看一下编译报错提示就明白了。
2)在库目录中添加“E:\Program Files\opencv\build\x64\vc15\lib”,也就是解压包库所在目录。
在这里插入图片描述
3)如下图,在链接器内添加如下两个文件(注意顺序。后面有字母d的表示debug版本,没有的表示relase版本,debug版本放在前面,表示优先调用——《毛星云版OpenCV3入门》)
opencv_world452d.lib
opencv_world452.lib
在这里插入图片描述
至此,环境已经配置完成,在解决方案资源管理器->源文件下,新建一个main.cpp,键入如下代码:
在这里插入图片描述

#include <iostream>
#include "opencv.hpp"

using namespace cv;

int main()
{
    Mat src = imread("D:/1-Practice/OpenCV/Data/Image/lenna.png"); //图片路径记得修改
    if (src.empty()) {
        std::cout << "image load fail" << std::endl;
        return 0;
    }
    imshow("test", src);
    waitKey(0);
    return 0;
}

注意:如果你的引用被标红,那很可能是编译设置错误,在工具栏改为 【【debug】【x64】】如下图:
在这里插入图片描述

3. 运行效果

在这里插入图片描述
如果未能成功编译或者运行错误,请检查图片路径是否错误(尤其是“/”和“\”的区别)。

4. 何谓一劳永逸

新建一个项目,新建main.cpp文件,把上述代码复制进去,发现引用被标红,原因是找不到这个文件。
在这里插入图片描述
其实在上面已经提到,需要在属性管理器中把默认的属性列表删除,添加我们自己定义的即可,见下图,不在标红,编译后完美运行。
在这里插入图片描述

5. 总结

(1)开发环境配置其实做了4件事情,环境变量添加(作用上面已经说明),添加头文件地址,添加库文件地址,指定库文件。
(2)我们新定义的属性列表文件,其实是记录了我们做的后面三件事。以文本形式打开这个属性列表文件,可以发现,这三件事分别是:

<IncludePath>E:\Program Files\opencv\build\include\opencv2;E:\Program Files\opencv\build\include;$(IncludePath)</IncludePath>
<LibraryPath>E:\Program Files\opencv\build\x64\vc15\lib;$(LibraryPath)</LibraryPath>
<AdditionalDependencies>opencv_world452d.lib;opencv_world452.lib;%(AdditionalDependencies)</AdditionalDependencies>

在这里插入图片描述

6. 后记

(1)在项目属性页(视图->属性页,或属性面板中打开),按照上面所述配置三个要素,也可以完成配置,但是只针对这个项目。新建一个项目后需要重新配置,不推荐这种方法。
(2)如前所述,大家一定不要修改默认的属性列表文件,而是新建一个然后修改。修改默认属性列表文件后,虽然新建项目以后不用再移除默认列表(因为用的就是默认本列表),以及添加新列表,但是代价就是某天你新建一个C++程序,本来不准备开发OpenCV的程序,OpenCV的库也被默认包含进来了,可能会导致不必要的麻烦。
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:51:52  更:2021-07-14 10:56:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 13:38:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码