VS2019中配置C++ OpenCV 4.5.4完整指南

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。
如果觉得本文能帮到您,麻烦点个赞👍呗!

近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️
Qt5.9专栏定期更新Qt的一些项目Demo
项目与比赛专栏定期更新比赛的一些心得面试项目常被问到的知识点。
人工智能学习与练手笔记定期更新优质的人工智能的论文有趣的AI项目

喜欢,觉得有帮助的,欢迎订阅专栏,后续有很多优质的文章进行更新,有任何疑问,欢迎留言!
在这里插入图片描述

VS2019中配置OpenCV 4.5.4完整指南

目录

  • VS2019中配置OpenCV 4.5.4完整指南
    • 一、前言
    • 二、OpenCV的安装
    • 三、OpenCv的简单Demo
    • 四、基于OpenCv的项目
    • 五、注意事项
    • 结束语

一、前言

在做Cpp 开发桌面应用的时候,总想着向python那样可以调用视觉的一些库,从而玩起YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks

关键的一步就在VS2019中搭建好OpenCV库。

但是,😂OpenCV的库过于多,且版本之间向上和向下兼容性差的问题,因此查过了一些资料也踩了一些坑,希望这篇博客可以简单的带你入个门。

OpenCv配置入门,运行一个简单demo,调试一个基于OpenCV的项目

二、OpenCV的安装

在这里插入图片描述
本文将指导你如何在Visual Studio 2019中配置OpenCV 4.5.4并编译在openCV基础上开发的ZXing库,以便在你的项目中利用这些强大的工具。
第一部分:配置OpenCV 4.5.4

  1. 下载和安装OpenCV

首先,你需要从OpenCV的官方网站下载OpenCV 4.5.4版本。下载完成后,解压缩文件到你的电脑上一个方便访问的位置。

  1. 配置环境变量

为了让OpenCV在Visual Studio 2019中正常工作,你需要配置环境变量。这一步骤确保VS2019能够找到OpenCV的库和头文件。

  • 打开“系统属性”对话框,然后点击“环境变量”按钮。
  • 在“系统变量”区域,找到Path变量,然后点击“编辑”。
  • 点击“新建”,添加OpenCV的build\x64\vc15\bin目录到路径中。
  • 确认更改,并重启电脑使路径生效。
  1. 在VS2019中配置项目

创建一个新的C++项目后,你需要配置项目以使用OpenCV库。

  • 右击项目名称,选择“属性”。
  • 在“配置属性”下,选择“C/C++” > “常规”,然后在“附加包含目录”中添加OpenCV的include目录路径。
  • 在“链接器” > “常规”下,添加OpenCV的lib目录路径到“附加库目录”。
  • 根据你的构建类型(Debug或Release),在“链接器” > “输入”下的“附加依赖项”中添加相应的OpenCV库文件。

完成这些步骤后,你的项目就配置好了OpenCV。

三、OpenCv的简单Demo

为了测试你在Visual Studio 2019中是否成功配置了OpenCV,你可以编写一个简单的C++程序,用于加载并显示一张图片。这将验证OpenCV库是否被正确链接和能够正常工作。
以下是一个简单的测试代码:

#include <opencv2/opencv.hpp>
#include <iostream>int main() {// 替换为你的图片路径std::string imagePath = "path_to_your_image.jpg";// 使用OpenCV的cv::imread函数加载图片cv::Mat image = cv::imread(imagePath, cv::IMREAD_COLOR);if (image.empty()) {std::cout << "无法加载图片,请检查路径是否正确" << std::endl;return -1;}// 创建一个窗口cv::namedWindow("测试OpenCV", cv::WINDOW_AUTOSIZE);// 在窗口中显示图片cv::imshow("测试OpenCV", image);// 等待用户按键,参数是等待时间(毫秒),0表示无限等待cv::waitKey(0);return 0;
}
  1. 包含OpenCV库:确保包含了opencv2/opencv.hpp,这是使用OpenCV所必需的。
  2. 读取图片:使用cv::imread函数读取一张图片。你需要将imagePath变量替换为实际图片的路径。
  3. 检查图片:如果图片未能加载(可能是因为路径错误或文件损坏),程序将输出错误消息并退出。
  4. 显示图片:使用cv::namedWindow和cv::imshow函数创建一个窗口并在其中显示图片。
  5. 等待按键:cv::waitKey(0)使程序等待用户按键,参数0表示无限等等,直到用户按下一个键。

确保在项目的链接器设置中已经添加了相应的OpenCV库文件,如opencv_world454d.lib(Debug模式)或opencv_world454.lib(Release模式),并且配置了正确的包含目录和库目录。运行此程序后,如果一切配置正确,你应该能看到一个窗口显示出你选择的图片。

四、基于OpenCv的项目

第二部分:编译ZXing库

ZXing (“Zebra Crossing”) 是一个开源项目,提供条码扫描功能。接下来,我们将编译ZXing库以便在项目中使用。

  1. 拉取ZXing库

打开命令行工具,使用git命令拉取ZXing库的最新代码:

  1. 使用CMake编译ZXing

接下来,使用CMake来编译ZXing库。确保你已经安装了CMake,并在命令行中执行以下命令:

这些命令会在zxing-cpp.release目录下生成ZXing的Release版本。

  1. 配置项目以使用ZXing

最后,你需要在VS2019项目中配置,以使用编译好的ZXing库。

  • 在项目的“链接器” > “常规”设置中,添加ZXing库的路径到“附加库目录”。
  • 在“链接器” > “输入”设置中,添加zxing.lib到“附加依赖项”。

至此,你的项目已经成功配置了OpenCV和ZXing库,可以开始开发图像处理和条码识别功能了。

五、注意事项

  • 在配置OpenCV时,确保正确设置了环境变量,并且重启了电脑使设置生效。

  • 在链接OpenCV库时,记得区分Debug和Release模式,它们需要链接不同的库文件。

  • 编译ZXing库时,确保你的系统中已安装了CMake,并且正确执行了命令行指令。
    常见问题解决

  • 环境变量未生效:如果发现VS2019无法识别OpenCV的路径,尝试手动重启电脑。

  • 链接错误:检查是否选择了正确的库文件进行链接,特别是区分了Debug和Release模式。

  • ZXing编译失败:确保拉取的ZXing库是最新的单分支版本,并且CMake版本符合要求。

结束语

配置OpenCV和ZXing库可能初看起来有些复杂,但遵循上述步骤,将使你能够顺利完成配置。掌握这些工具不仅能够扩展你的项目功能,还能够提升你的编程技能到新的水平。希望本文能够帮助你顺利完成配置。

最后,最后
如果觉得有用,麻烦三连👍⭐️❤️支持一下呀,希望这篇文章可以帮到你,你的点赞是我持续更新的动力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32标准库ADC和DMA知识点总结

目录 前言 一、ADC模数转换器 &#xff08;1&#xff09;AD单通道 &#xff08;2&#xff09;AD多通道 二、DMA原理和应用 &#xff08;1&#xff09;DMA数据转运&#xff08;内存到内存&#xff09; &#xff08;2&#xff09;DMAAD多同道&#xff08;外设到内存&#x…

24深圳杯数学建模挑战赛A题6页初步思路+参考论文+保姆级答疑!!!

问题1:单个残骸的精确位置定位 建立数学模型&#xff0c;分析如果要精准确定空中单个残骸发生音爆时的位置坐标&#xff08;经度、纬度、高程&#xff09;和时间&#xff0c;至少需要布置几台监测设备&#xff1f;假设某火箭一级残骸分离后&#xff0c;在落点附近布置了7台监测…

【热门话题】AI作画算法原理解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 AI作画算法原理解析AI作画算法概述基础原理&#xff1a;机器学习与深度学习卷积…

Bentley二次开发教程24-交互式类工具

交互式工具概念简述 本次内容主要涉及到交互式工具的使用&#xff0c;在MicroStation中&#xff0c;超过一半的功能都是以交互式工具的形式而存在的&#xff0c;因此交互式工具在MicroStation二次开发中便显得非常重要。当我们的鼠标或键盘在视图中产生交互操作时&#xff0c;…

黑马微服务课程2

课程地址&#xff1a;2024最新SpringCloud微服务开发与实战&#xff0c;java黑马商城项目微服务实战开发&#xff08;涵盖MybatisPlus、Docker、MQ、ES、Redis高级等&#xff09;_哔哩哔哩_bilibili 课程名称&#xff1a;2024最新SpringCloud微服务开发与实战&#xff0c;java…

《A More Fine-Grained Aspect-Sentiment-Opinion Triplet Extraction Task》阅读笔记

一、论文简介 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;情感分析一直是一个热门的研究主题&#xff0c;它帮助机器理解文本中的情感倾向。随着技术的进步&#xff0c;研究者们不断推动情感分析向更细粒度的方向发展&#xff0c;即从简单的正负情感判断&#…

【VueUse】重新定义状态管理在 Vue 中的体验

在 Vue 生态系统中&#xff0c;状态管理一直是开发者们关注的焦点之一。而随着 VueUse 的出现&#xff0c;我们迎来了一种全新的方式来处理状态管理&#xff0c;它让我们能够以更简单、更灵活的方式来管理应用程序的状态。 在本文中我们将深入探讨 VueUse 中与状态管理相关的内…

StrongSORT——基于DeepSORT,提高多目标跟踪的准确性和鲁棒性

1、概述 1.1 DeepSORT DeepSORT算法是在SORT基础上发展起来的一种多目标跟踪算法。SORT算法结合了目标检测器和跟踪器&#xff0c;其中跟踪器的核心是卡尔曼滤波和匈牙利算法。 卡尔曼滤波用于预测目标在下一帧的位置和状态而匈牙利算法则用于将预测状态与实际检测结果进行最…

SpringCloud基础 Consul的引入

前言 首先是为什么引入consul这个组件 我们知道微服务分为很多个模块,这里模块中相互调用,我使用硬编码的模式是不好的 比如微服务模块需要更新的时候,我们使用硬编码的方式可能需要修改很多个地方 但是使用consul之后,就引入了注册中心,我们只需要将对应的服务注册为节点 这样…

android脱壳第二发:grpc-dumpdex加修复

上一篇我写的dex脱壳&#xff0c;写到银行类型的app的dex修复问题&#xff0c;因为dex中被抽取出来的函数的code_item_off 的偏移所在的内存&#xff0c;不在dex文件范围内&#xff0c;所以需要进行一定的修复&#xff0c;然后就停止了。本来不打算接着搞得&#xff0c;但是写了…

【论文阅读】EgoPCA: A New Framework for Egocentric Hand-Object Interaction

论文主要贡献 提出一种新的框架&#xff1a;Ego-HOI recognition by Probing, Curation and Adaption (EgoPCA)。构建了全面的预训练集&#xff0c;平衡的测试集&#xff0c;以及一个包含了微调策略的baseline。 在Ego-HOI达到了SOTA&#xff0c;并且建立了有效的机制方法。 …

【后端】git与python的结合使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、git介绍二、git常见使用三、git与python的结合使用四、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发…

【OceanBase系列】—— 常用运维操作(备忘)

作者简介&#xff1a; 花名&#xff1a;绪宁&#xff0c;OceanBase 数据库解决方案架构师 创建租户 方法一&#xff1a;OCP 创建 确认可分配资源 具体可以分配多少内存&#xff0c;可以通过【资源管理】查看各节点的剩余资源 2. 新建租户 3. 填写租户信息 zone 优先级主要是 p…

STM32玩转物联网实战篇:5.ESP8266 WIFI模块MQTT通信示例详解

1、准备开发板 开发板功能区分布图 开发板俯视图 2、实验讲解 在之前的章节中&#xff0c;已经讲解过了MQTT的通讯原理和组包过程&#xff0c;现在开始手把手的教大家用代码来实现连接MQTT平台以及数据的交互&#xff0c;实际上这篇文章已经拖更接近两年了&#xff0c;非常…

《QT实用小工具·三十九》仿 Windows10 画图3D 的颜色选择器, 但更加强大

1、概述 源码放在文章末尾 该项目实现了仿 Windows10 画图3D 的颜色选择器&#xff0c;功能更加丰富更加强大。 项目部分代码如下所示&#xff1a; import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import QtGraphicalEffects 1.15Item {id…

【leetcode面试经典150题】72. 从前序与中序遍历序列构造二叉树(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

opencv绘制线段------c++

绘制线段 bool opencvTool::drawLines(std::string image_p, std::vector<cv::Point> points) {cv::Mat ima cv::imread(image_p.c_str()); // 读取图像&#xff0c;替换为你的图片路径 cv::Scalar red cv::Scalar(0, 0, 255); // Red color int thickness 2;// 遍…

面试遇到算法题:实现LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构。 这是一道大厂面试高频出现的算法题&#xff0c;难度为⭐️⭐️⭐️&#xff0c;属于中等&#xff0c;老铁们来一起看看这个题该怎么解&#xff1f; 1. 原题再现 没有废话&#xff0c;翠花&#xff0c;上酸菜&…

JS 添加数组元素( 4种方法 )

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、四种…

Spring Boot 集成 EasyExcel 3.x

Spring Boot 集成 EasyExcel 3.x Spring Boot 集成 EasyExcel 3.x 本章节将介绍 Spring Boot 集成 EasyExcel&#xff08;优雅实现Excel导入导出&#xff09;。 &#x1f916; Spring Boot 2.x 实践案例&#xff08;代码仓库&#xff09; 介绍 EasyExcel 是一个基于 Java 的、…