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

news2024/11/27 2:15:56

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

近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️
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.coloradmin.cn/o/1625718.html

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

相关文章

C# 图像处理 添加水印

方法1&#xff0c;使用自带的画刷进行绘制水印 示例代码 public partial class Form1 : Form{public Form1(){InitializeComponent();}string photoPathstring.Empty;Bitmap image null;private void button1_Click(object sender, EventArgs e) //选择照片{OpenFileDialog d…

JavaWeb-自学JSP组件报告

自学JSP组件报告 一、组件资源及作用 1. commons-fileupload-1.2.2.jar 组件作用&#xff1a;用于处理HTTP文件上传请求&#xff0c;提供了文件上传的解析和存储功能。它允许开发者在Web应用中轻松实现文件上传功能。 2. commons-io-2.4.jar 组件作用&#xff1a;提供了一…

免单优选:电商销售新模式,低门槛高回报引领消费热潮

免单优选&#xff0c;一种颠覆传统的电商销售新模式&#xff0c;其核心在于通过价格优化策略、创新的奖励机制以及社交网络的深度应用&#xff0c;来激发消费者的购买欲望&#xff0c;进而推动销售实现快速增长。 一、坚守法律底线&#xff0c;打造透明奖励体系 免单优选模式坚…

POCEXP编写—POC编写实战

POC&EXP编写—POC编写实战 1. 概念引入2. POC编写2.1. GET与POST2.2. thinkcmf文件包含(Get请求)2.2.1. POC验证2.2.1.1. 漏洞存在复现 2.2.2. 编写POC2.2.2.1. 脚本报错2.2.2.2. 脚本美化2.2.2.3. 脚本测试2.2.2.4. 注意事项 2.3. Struts2 S2-061 远程命令执行漏洞(Get请求…

Hot 100总结【leetcode】

文章目录 哈希1. 1 两数之和2. 49 字母异或词分组3. 128 最长连续序列4. 283 移动零5. 11 盛最多水的容器6. 15 三数之和7. 42 接雨水 滑动窗口8. 3 无重复的最长子串9. 438 找到字符串中所有字母异位词子串10. 560 和为k的子数组11. 239 滑动窗口最大值12. 76 最小覆盖子串 普…

SpringBoot + kotlin 协程小记

前言&#xff1a; Kotlin 协程是基于 Coroutine 实现的&#xff0c;其设计目的是简化异步编程。协程提供了一种方式&#xff0c;可以在一个线程上写起来像是在多个线程中执行。 协程的基本概念&#xff1a; 协程是轻量级的&#xff0c;不会创建新的线程。 协程会挂起当前的协…

KT-0850 三箱社交箱

01简介 社交一般指社会交往。 社会交往 &#xff0c;简称“社交”&#xff08;socializing&#xff09;&#xff0c;是指在一定的历史条件下&#xff0c;个体之间相互往来&#xff0c;包括物质、精神交流的社会活动。三箱社交(Three-chamber Sociability)箱行为实验是一种经典…

【蓝桥2025备赛】容斥原理

容斥原理 背景&#xff1a;两个集合相交 高中的韦恩图&#xff0c;我们知道两个集合相交时我们可以通过简单的计算来认识相关的性质 集合相交的区域是 A ∩ B A\cap B A∩B ,集合的并集是 A ∪ B A\cup B A∪B ,那怎么用集合表示 A ∪ B A\cup B A∪B 我们可以看作是A集合…

【go零基础】go-zero从零基础学习到实战教程 - 2项目初始化

到项目初始化过程了&#xff0c;这边的项目设计完全按照作者自己的喜好来进行定义和设置的&#xff0c;所以各位完全可以按照自己的偏好自喜设置哈。 首先是创建一个工作文件夹哈。 别问为啥不直接quickstart&#xff0c;因为quickstart生成的api名字是greet&#xff0c;改起来…

Springboot3集成Web、RedisTemplate、Test和knife4j

本例将展示&#xff0c;如何在Springboot3中完成&#xff1a; Redis功能的Web接口实现构建Redis功能的单元测试knife4j自动化生成文档 Redis功能 Pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

02 贪吃蛇

前言 呵呵 这是不知道 在哪里看到的 别人做的一个贪吃蛇 因此 也把我 之前的 贪吃蛇 移植上来了 当然 这个不过是为了 简单的入门了解, 呵呵 然后 c版本的贪吃蛇 需要先移植成 c 版本, 然后 再根据 单片机相关 设计调整 比如 led 点阵的输出, 比如 c99 语法的一些不兼容…

分布式密钥生成

可验证且无经销商 分布式密钥生成 (DKG) 是一种加密协议&#xff0c;使多方能够协作生成共享密钥&#xff0c;而无需任何一方完全了解密钥。 它通过在多个参与者之间分配信任来增强各种应用程序的安全性&#xff0c;从而降低密钥泄露的风险。 我们引入了一种可验证且无经销商的…

C语言中整型与浮点型在内存中的存储

今天让我们来看看整型的数据和浮点型的数据在内存中是怎么存储的呢 整型数据在内存中的存储 整型数据在内存中存储的是二进制的补码 正数的话也没什么可说的&#xff0c;原码反码补码都相同 我们来看看负数&#xff1a; 以-5为例 原码&#xff1a;10000000 00000000 00000000 0…

集控中心的调度桌成就事业的重要工具

在集控中心的调度室内&#xff0c;一排排整齐的调度桌构成了一道独特的风景线。其中最引人注目的便是那一张张配备现代化设备&#xff0c;宽敞而舒适的调度桌。就我们嘉德立来说这些调度桌不仅见证了调度员们严谨、细致的工作态度&#xff0c;也是他们成就事业的重要工具。 集控…

C++初阶之入门

零、什么是C C是基于C语言而产生的&#xff0c;它既可以进行C语言的过程化程序设计&#xff0c;又可以进行以抽象数据类型为特点的基于对象的程序设计&#xff0c;还可以进行面向对象的程序设计。 C缺点之一&#xff0c;是相对许多语言复杂&#xff0c;而且难学难精。许多人说学…

13 c++版本的五子棋

前言 呵呵 这大概是 大学里面的 c 五子棋了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 然后 貌似 放在 win10 上面执行 还有一些问题, 渲染的, 应该很好调整 五子棋 #include<Windows.h> #include<io…

ChatGPT全方位指导:学术论文写作从零开始,轻松搞定高质量论文!

目录 文末福利 一、论文选题的深度探讨 二、撰写摘要的艺术 三、关键词的精选 四、引言的构建 五、正文的结构设计 六、撰写结论的策略 七、致谢的编写 八、附录的有效利用 九、参考文献的整理 文末有福利哦 撰写一篇高质量的学术论文是一项既复杂又耗时的任务。这个…

c++中的指针

一、指针的基本概念 指针的作用&#xff1a;可以通过指针间接访问内存 内存编号是从0开始记录的&#xff0c;一般采用16进制数字表示。可以利用指针变量保存地址。 二、指针变量的定义和使用 指针变量定义语法&#xff1a; 数据类型 * 变量名 #include<iostream> u…

JAVA实现easyExcel模版导出

easyExcel文档 模板注意&#xff1a; 用 {} 来表示你要用的变量 &#xff0c;如果本来就有"{“,”}" &#xff0c;特殊字符用"{“,”}"代替{} 代表普通变量{.}代表是list的变量 添加pom依赖 <dependency><groupId>com.alibaba</groupId&g…

模块三:二分——LCR. 173.点名

文章目录 题目描述算法原理暴力查找二分查找 代码实现暴力查找二分&#xff1a;CJava 题目描述 题目链接&#xff1a;LCR. 173.点名 关于这道题中&#xff0c;时间复杂度为 O(N) 的解法有很多种&#xff0c;⽽且也是⽐较好想的&#xff0c;这⾥就不再赘述。本题只讲解⼀个最优…