在visual studio 2022 C++中配置最新版OpenCV和可能错误解决方案

news/2024/10/31 1:26:20/

前面我们写了一篇博文有关在C#中配置OpenCV,但C#版本的OpenCV的学习资源相对较少,C++版的和Python版的比较多。这里先说说C++版的如何配置吧!总共完成四步即可使用起来。

文章目录

  • 一、下载并安装OpenCV
    • 1、下载OpenCV
    • 2、安装OpenCV
  • 二、配置环境
    • 1、外部包含目录
    • 2、库目录
    • 3、链接器输入:附件依赖项
  • 三、测试运行OpenCV
    • 1、找不到opencv_world470.dll
    • 2、vcruntime140.dll处引发异常
    • 3、代码和运行
    • 4、保存一个配置PropertySheet

文章原出处: https://blog.csdn.net/haigear/article/details/129617330

一、下载并安装OpenCV

1、下载OpenCV

我们来到官网,最新版截止到22年12月的4.7,无所谓你安装哪个版本都无所谓,现在市面上4.5的教程资源多一些,你可以考虑4.5的吧。不过我这里做演示就用4.7的。
在这里插入图片描述
进来之后记得滑到下面,点下面的release才能有下载的按钮,选择对应的版本即可下载,不过我这里还是提醒一句,不要用浏览器下载,用迅雷速度很快(有的人有浏览器下载一看只有几十K,就去找国内的镜像网站下载去了,没有这个必要),我的下载速度达到3M左右,应该是算不错的了。
在这里插入图片描述

2、安装OpenCV

下载完毕后,我们就着手安装了,其实严格意义上说不叫做安装吧,叫做解压,选择一个你自己喜欢的目录解压即可。
在这里插入图片描述
我这里默认你已经在VS中安装好了c++桌面开发环境了,如果没有这个简单在Visual Studio Installer中选择并安装即可。这里不再赘述,贴个图,怕你安装错了!

在这里插入图片描述
如果不安装那么你的项目即使能够建立也不能编译,这里不展开说了哦!去安装去吧!
在这里插入图片描述

二、配置环境

1、外部包含目录

主要配置两个东东,外部包涵目录和库目录及链接器
在这里插入图片描述
千万不能把目录层级搞错,否则你仍然会在编译阶段遇到找不到包涵文件

在这里插入图片描述
这样的错就是因为上述目录多进入了一级,到了OpenCV2,千万不必这样
在这里插入图片描述

2、库目录

在这里插入图片描述

3、链接器输入:附件依赖项

附加依赖配置的时候,我们还是在OpenCV\opencv\build\x64\vc16\lib下拷贝,目录和上面的库目录一样,但一定记住,文件扩展名不要丢掉了,否则配置无效,这里如果你是要发布的就拷贝没有d的lib,我这里是需要调试debug的,所以拷贝带有d的lib文件。
在这里插入图片描述

到了这里,我们的配置算是结束了,可以正常编译opencv的项目了。

三、测试运行OpenCV

1、找不到opencv_world470.dll

第一次运行,你可能会遇到这个错误,那是由于没有配置环境变量,配置好即可,将外部
在这里插入图片描述
在用户环境变量或者系统环境变量的path中添加一个opencv的bin目录
在这里插入图片描述
新建添加,粘贴目录在这里即可
在这里插入图片描述
记得重新启动VS再次进入项目才能够生效。

2、vcruntime140.dll处引发异常

遇到这个错误,那是因为链接输入配置处的lib文件搞错了,你可能拷贝的是没有带d的lib文件,修改过来即可。
在这里插入图片描述

3、代码和运行

测试代码如下:

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;int main()
{std::cout << "Hello World!\n";Mat dstimg;Mat srcimg = imread("d:\test.jpg");cvtColor(srcimg, dstimg, COLOR_RGB2GRAY);imshow("showimage",dstimg);waitKey();return 0;
}

上面的代码只是将图片读入后变成灰度图,测试CV的调用是否正常。
运行效果如下:
原图:
请添加图片描述
运行后的灰度图:
在这里插入图片描述
说明已经配置完成了。

4、保存一个配置PropertySheet

这个比较简单,就是在属性管理其中,点击第二个图标,新建一个PropertySheet,双击这个PropertySheet,它和我们打开项目的属性一模一样,那么你将上面配置过的属性,比如链接器的输入配置,外部包含目录,目录库等,都在这里配置一次,或者拷贝过来也是很容易的,这个PropertySheet就可以在你下次新建项目的时候直接导入即可省去上面那一整套繁琐的配置工作了。

在这里插入图片描述
在这里插入图片描述
这个很容易,所以不再啰嗦了,记得保存的这个PropertySheet取一个你记得的名字,放在一个你很容易找到的目录下,当做一个宝贵的“再利用资源”存好。

码字不易,转载请注明出处:https://blog.csdn.net/haigear/article/details/129617330


http://www.ppmy.cn/news/33028.html

相关文章

容器的老祖宗LXC和Docker的关系

一、什么是LXC&#xff1f; LXC&#xff08;Linux Container的缩写&#xff09;是一个基于Linux内核的容器虚拟化技术&#xff0c;它提供了一种轻量级、快速、简便的方式来创建和管理系统容器。与传统虚拟化技术不同&#xff0c;LXC并不会模拟硬件&#xff0c;而是利用Linux内…

格式化输出流及转义

格式化输出流大全格式化输出流操作std::fixed以小数点模式输出浮点数std::scientific以科学计数法输出浮点数std::defaultfloat以默认方式输出浮点数std::setprecision设置小数精度&#xff0c;例如设置为2&#xff0c;则精度为2std::dec以十进制输出std::hex以十六进制输出std…

蓝桥杯嵌入式第四课--定时器

前言蓝桥杯对于定时器这部分的考察主要集中在定时器中断、PWM输出以及输入捕获三个方面&#xff0c;本节课着眼于应用&#xff0c;介绍一下定时器的使用。定时器中断一、基础概念对没接触过定时器的新手来说&#xff0c;如果想要快速上手定时器的使用&#xff0c;首先要先对定时…

GPT-4技术报告

摘要 链接&#xff1a;https://cdn.openai.com/papers/gpt-4.pdf 我们汇报了GPT-4的发展&#xff0c;这是一个大规模的多模态模型&#xff0c;可以接受图像和文本输入并产生文本输出。虽然在许多现实场景中&#xff0c;GPT-4的能力不如人类&#xff0c;但它在各种专业和学术基…

C语言刷题(6)(猜名次)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰还是在复习噢&#xff0c;今天来给大家介绍一个有意思的题目 题目名称&#xff1a; 猜名次 题目内容&#xff1a; 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果&#xff1a; A选…

QT入门Item Views之QListView

目录 一、QListView界面相关 1、布局介绍 二、代码展示 1、创建模型&#xff0c;导入模型 2、 设置隔行背景色 3、删除选中行 三、源码下载 此文为作者原创&#xff0c;创作不易&#xff0c;转载请标明出处&#xff01; 一、QListView界面相关 1、布局介绍 先看下界面…

C语言刷题(7)(字符串旋转问题)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容依旧是复习之前的知识点&#xff0c;那么&#xff0c;就是做一道小小的题目啦&#xff0c;下面&#xff0c;让我们进入C语言的世界吧 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; A…

一个Bug让人类科技倒退几十年?

大家好&#xff0c;我是良许。 前几天在直播的时候&#xff0c;问了直播间的小伙伴有没人知道「千年虫」这种神奇的「生物」的&#xff0c;居然没有一人能够答得上来的。 所以&#xff0c;今天就跟大家科普一下这个人类历史上最大的 Bug 。 1. 全世界的恐慌 一个Bug会让人类…