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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的报警器

参考前面的内容&#xff1a;STM32点灯大师&#xff08;中断法&#xff09;-CSDN博客 同样是使用中断的方式触发警报 一、GPIO口配置起来 二、代码 打开gpio.c 重写虚函数&#xff0c;实现我们想要的功能 -----------------------------------------------------------------…

变频器基础原理

文章目录 0. 基本知识1.三相的电压之和为02.正弦交流相量的相量表示法(相量只是表示正弦量&#xff0c;而不等于正弦量 &#xff1b;只有正弦量才能用相量表示)引入相量表示法目的:一种正弦量的产生方式:正弦量的相量表示&#xff0c;使用欧拉公式表示复数 3.用复数表示正弦量&…

Redis入门到通关之Redis网络模型-用户空间和内核态空间

文章目录 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开发者。 博客特色&#xff1a; 在我的…

25考研数学可以全程跟张宇吗?

先说结论&#xff1a;25可以全程跟张宇。除了这三种情况。 总的来说&#xff0c;张宇的知识点是全的&#xff0c;不需要担心漏知识点、漏经典方法。不单高数&#xff0c;线代概率也是这样。 但是&#xff0c;老师讲得好&#xff0c;不能保证你上岸。 如果遇到这三种情况&…

java银行存取款程序设计

银行存取款的流程是人们非常熟悉的事情&#xff0c;用户可在银行对自己的资金账户进行存款、取款、查询余额等操作&#xff0c;极大的便利了人民群众对资金的管理。 本任务要求&#xff0c;使用所学知识编写一个银行存取款程序&#xff0c;实现存取款功能。编写一个帐户类实现…

LeetCode //C - 38. Count and Say Medium Topics Companies

38. Count and Say The count-and-say sequence is a sequence of digit strings defined by the recursive formula: countAndSay(1) “1”countAndSay(n) is the way you would “say” the digit string from countAndSay(n-1), which is then converted into a differen…

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

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

Linksys RE7000 “AccessControlList ”命令执行漏洞(CVE-2024-25852 )

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 Linksys RE7000 是由 Linksys 公司生产的一款 Wi-F…

Netty学习——实战篇5 Netty 心跳监测/WebSocket长连接编程 备份

1 心跳监测 MyServer.java public class MyServer {public static void main(String[] args) {NioEventLoopGroup bossGroup new NioEventLoopGroup(1);NioEventLoopGroup workerGroup new NioEventLoopGroup();try {ServerBootstrap serverBootstrap new ServerBootstrap…

DevOps文化对团队有何影响?

DevOps文化对团队有很多积极影响&#xff0c;包括提高团队效率、促进沟通与协作、提高产品质量和推动创新等方面。然而&#xff0c;实施DevOps文化也需要一定的挑战&#xff0c;如改变团队成员的观念、引入新的工具和流程等。因此&#xff0c;团队需要充分了解DevOps文化的价值…

【Ant-Desgin-React 穿梭框】表格穿梭框,树穿梭框的用法

Antd Desgin 穿梭框 普通用法高级用法-表格穿梭框组件高级用法-树穿梭框组件 普通用法 /* eslint-disable no-unused-vars */ import React, { useEffect, useState } from react import { Space, Transfer } from antd// Antd的穿梭框组件Mock数据 const mockData Array.fro…

CJSON工具类

4.4.3.CJSON工具类 OpenResty提供了一个cjson的模块用来处理JSON的序列化和反序列化。 官方地址&#xff1a; https://github.com/openresty/lua-cjson/ 1&#xff09;引入cjson模块&#xff1a; local cjson require "cjson"2&#xff09;序列化&#xff1a; …

记录海豚调度器删除工作流实例失败的解决办法(DolphinScheduler的WebUI删除失败)

本博客记录以下问题解决办法&#xff1a;使用dolphinscheduler的WebUI运行工作流后出现内存占用过高导致的任务阻塞问题&#xff0c;并且在删除工作流实例时总是报错无法删除 解决步骤 在前端页面无法删除&#xff0c;于是搜索资料&#xff0c;发现可以登录数据库进行工作流实…

Day05-docker-compose与私有仓库

Day05-docker-compose与私有仓库 3.4 Docker Compose1&#xff09;compose极速上手指南案例28-初步上手docker-compose2&#xff09;compose文件的常用指令3&#xff09;案例29-docker-compose部署kodexp5&#xff09;小结 3.5 docker镜像仓库之registry仓库1&#xff09;仓库选…

Qt中常用对话框

Qt中的对话框&#xff08;QDialog&#xff09;是用户交互的重要组件&#xff0c;用于向用户提供特定的信息、请求输入、或进行决策。Qt提供了多种标准对话框以及用于自定义对话框的类。以下将详细介绍几种常用对话框的基本使用、使用技巧以及注意事项&#xff0c;并附带C示例代…

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能)教学广播音箱 办公室背景音乐广播音箱 2.0声道壁挂式网络有源音箱

SV-7041T IP网络有源音箱 教室广播多媒体音箱&#xff08;带本地扩音功能&#xff09; 教学广播音箱 办公室背景音乐广播音箱 一、描述 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带…

学习指导|在改变

备忘在这里啦。潦草本草

黑马微服务课程2

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

【1429】招生管理管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 招生管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

android脱壳:一种使用native进行抽取壳脱壳的方法,native版本的frida-fart

前言 写rxposed的时候&#xff0c;搞了很多模块&#xff0c;其中有一个远程调用脱壳的&#xff0c;但是当时使用的是rmi远程调用&#xff0c;因为一些问题无法使用&#xff0c;可能是对抗问题&#xff0c;也有可能是技术问题&#xff0c;所以我又换了一种远程调用方式。 概述…