VS2022 配置OpenCV开发环境详细教程

OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,由Intel开发并首先发布于1999年。OpenCV被广泛用于实时图像处理、视频分析、物体检测、面部识别、机器人视觉以及许多其他领域。它支持C++、Python、Java等多种编程语言,并且提供了数百种计算机视觉算法,包括但不限于:

  • 图像处理:图像滤波、几何变换、直方图均衡化等。
  • 特征检测和描述:SIFT、SURF、ORB等。
  • 物体检测:使用Haar级联或深度学习模型检测人脸、行人等。
  • 视频分析:运动检测、背景减除等。
  • 机器学习:OpenCV集成了一些机器学习框架,可以用于训练和使用分类器。
  • 深度学习:OpenCV 3.4及以上版本支持深度学习模型,特别是使用DNN(Deep Neural Network)模块。

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它的历史和发展可以追溯到1999年。以下是OpenCV历史的一些关键点:

  • 起源:OpenCV项目由Intel公司在1999年启动,旨在创建一个免费的、开源的计算机视觉库,并开放其源代码以推动计算机视觉领域的研究和发展。

  • 开源发布:2000年,OpenCV发布了第一个公开版本,这标志着OpenCV开源计划的正式启动。

  • 发展
    2005年,OpenCV 2.0 版本发布,引入了面向对象的接口、多核支持、Python 接口等功能。
    2008年,OpenCV加入Google Summer of Code(GSoC)项目,促进了社区的发展。
    2011年,OpenCV 2.3 版本发布,引入了更快的图像处理算法、CUDA加速支持等。

  • 重大更新
    2015年,OpenCV 3.0 版本发布,带来了重大变化,包括C++11支持、模块化架构、DNN模块等。
    2018年,OpenCV 4.0 版本发布,引入了C++11重构、DNN模块的改进、Vulkan后端、性能优化等。

  • 持续发展:从2019年的4.1版本开始,OpenCV继续改进和优化各种功能,如图像处理算法、目标检测算法等。

  • 版本更新:OpenCV持续更新迭代,推出了4.2、4.3、4.4等多个版本,不断引入新功能和改进。

  • 架构支持:2022年12月8日,龙芯中科宣布,OpenCV开源社区正式合入了对LoongArch架构支持的代码,优化后的OpenCV性能显著提升。

  • 最新动态:截至2024年,OpenCV已经发展到4.5版本,且在2022年12月29日发布了4.7.0版,带来了全新的ONNX层,提高了DNN代码的卷积性能。

VS2022配置OpenCV过程

  1. 下载OpenCV库:https://opencv.org/
    在这里插入图片描述
    在这里插入图片描述
  2. 点击opencv-4.9.0-windows.exe
    在这里插入图片描述
  3. 选择合适的目录
    在这里插入图片描述
  4. 提取
    在这里插入图片描述
  5. 在预定目录可以看到提取的文件
    在这里插入图片描述
  6. bin目录添加到系统环境变量opencv\build\x64\vc16\bin
    在这里插入图片描述
  7. 按照系统-系统信息-高级系统设置-环境变量-系统环境变量path-新建-确定顺序,将opencv库路径添加到系统变量中。
    在这里插入图片描述
  8. 重启计算机
  9. 开始验证OpenCV,打开VS2022,新建一个项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  10. 空项目已经建立好,点击“项目”,下拉“属性”
    在这里插入图片描述
  11. 配置属性,将下载的OpenCV里include文件目录放到包含目录中。
    在这里插入图片描述
  12. 将OpenCV的lib库文件路径放到库目录中。
    在这里插入图片描述
  13. 修改链接器,将OpenCV中lib库里的opencv_world490d.lib文件名复制到附加依赖项中。
    在这里插入图片描述
  14. 环境配置好,开始测试代码
    在这里插入图片描述
    在这里插入图片描述
  15. 写测试代码,运行demo
#include <opencv2/opencv.hpp>int main() {// 读取图片cv::Mat img = cv::imread("amy.png");// 检查图片是否成功读取if (img.empty()) {std::cerr << "Error: Loading image" << std::endl;return -1;}// 创建窗口并显示图片cv::namedWindow("Image Display", cv::WINDOW_AUTOSIZE);cv::imshow("Image Display", img);// 等待按键事件,之后关闭窗口cv::waitKey(0);cv::destroyAllWindows();return 0;
}
  1. 大功高成,显示图片,,在VS2022中配置OpenCV开发环境成功💪,可以玩转OpenCV了。
    在这里插入图片描述

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

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

相关文章

代码+视频,R语言绘制生存分析模型的时间依赖(相关)性roc曲线和时间依赖(相关)性cindex曲线

ROC曲线分析是用于评估一个因素预测能力的手段&#xff0c;是可以用于连续型变量分组的方法。在生存分析中&#xff0c;疾病状态和因素取值均会随时间发生变化。而标准的ROC曲线分析将个体的疾病状态和因素取值视作固定值&#xff0c;未将时间因素考虑在分析之中。在这种情况下…

selenium如何开启手机模式

在Python中使用Selenium进行网页自动化测试或爬取时&#xff0c;如果你想模拟手机模式&#xff08;即移动端浏览器模式&#xff09;&#xff0c;可以通过设置用户代理&#xff08;User-Agent&#xff09;和使用移动端的视口&#xff08;Viewport&#xff09;来实现。以下是一些…

STM32入门_江协科技_1~2_OB记录的自学笔记_STM32简介

1.综述 1.1. 课程简介 手打代码是加入了实操&#xff0c;增加学习效果&#xff1b; STM最小系统板面包板的硬件平台&#xff1b; 配套0.96寸的显示屏&#xff0c;便于调试&#xff1b; 因为使用面板板&#xff0c;所以如果程序现象不出来也有可能是硬件连接的问题&#xff1b; …

Linux 小技巧1

目录 一. 统计文件的总行数二. 获取从第二行开始的内容三. 合并两个文件为一个文件四. 统计指定列唯一值的数量五. 列出文件的绝对路径六. 获取除了空白行和注释之外的部分 一. 统计文件的总行数 ⏹非压缩文件 统计当前文件夹下csv文件的行数 wc -l ./*.csv统计指定文件夹下…

Linux下深度学习虚拟环境的搭建与模型训练

在深度学习实践中&#xff0c;环境配置是十分重要且免不了的一步。本文以 YOLOv4 模型&#xff0c;介绍在Linux下虚拟环境配置到模型训练的过程。 安装Miniconda&#xff1a; Miniconda是Anaconda的一个轻量级版本&#xff0c;非常适合用于科学计算和数据处理。 wget https:…

微信小程序 - 登录(切屏后继续倒计时)

屏幕休眠或后台运行倒计时暂停问题 updateTime: function () {let promise new Promise((resolve, reject) > {var beginTime new Date().getTime();let setTimer setInterval(() > {var newTime new Date().getTime();var dTime (newTime - beginTime) / 1000;dTim…

甘特图是什么?利用甘特图来优化项目管理流程

在现代项目管理中,图表是一种强大而直观的工具,可以帮助项目经理和团队成员清晰地了解并掌控整个项目进程。其中,甘特图是最常用和最有效的图表之一。 甘特图是一种条形图,可以用来直观地展示项目中各个任务的进度、持续时间和相互关系。它由一个横轴和一个纵轴组成。横轴代表时…

基于单片机的多功能电子万年历系统

摘要:该题目要求学生综合运用单片机原理、低频电子线路、数字电路与逻辑设计等相关知识,设计完成多功能电子万年历系统。通过完成设计任务,使学生掌握单片机设计开发的基本流程,增强学生动手实践能力,培养学生分析和解决实际问题的能力,为后续课程的学习和工作打下良好基础。 关…

redis 使用互斥锁或逻辑过期两种方案解决缓存击穿,和缓存穿透(用缓存空值 或布隆过滤器)的解决方案

缓存穿透 缓存穿透是指在缓存中查找一个不存在的值&#xff0c;由于缓存一般不会存储这种无效的数据&#xff0c;所以每次查询都会落到数据库上&#xff0c;导致数据库压力增大&#xff0c;严重时可能会导致数据库宕机。解决方案&#xff1a; 1 缓存空值 (本文此方案) …

【c++】----STL简介string

目录 1. 什么是STL 2. STL的版本 3. STL的六大组件 4.STL的缺陷 5.string类 1. 为什么学习string类&#xff1f; 6.string类的常用接口说明&#xff08;下面我们只讲解最常用的接口&#xff09; 1.string 常见构造 2.string类的遍历 iterator 迭代器遍历 &#xff08;…

初识BootStrap

目录 前言: 1.Bootstrap的特点包括&#xff1a; 1.1响应式设计&#xff1a; 1.2组件丰富&#xff1a; 1.3易于定制&#xff1a; 1.4兼容性良好&#xff1a; 1.5强大的社区支持&#xff1a; 1.6一致的样式和布局&#xff1a; 1.7 插件和扩展性 2.初识Ajax: 2.1同步请求…

CANopen学习笔记

1.CANopen的预定义报文ID分类 CANopen在设计时&#xff0c;对其定义为小网络、控制信号的实时通讯&#xff1a; 报文传输采用CAN标准帧格式。即11bit的ID域&#xff0c;以尽量减小传输时间。网络控制报均采用数据最小字节数。比如心跳报文&#xff0c;只有1个字节数据。实时更…

STM32应用开发教程进阶--Wi-Fi通信(ESP8266模块:STA、AP、STA+AP)

实现目标 1、熟悉Wi-F、ESP8266模块 2、掌握ESP8266模块共3种工作模式&#xff1a;STA、AP、STAAP的配置 3、具体实现目标&#xff1a;&#xff08;1&#xff09;AT固件烧录&#xff1b;&#xff08;2&#xff09;ESP8266模块STA、AP、STAAP的配置 一、Wi-Fi概述 1、Wi-Fi定…

【JavaScript】使用 AbortController 对象中断 fetch 的文本流传输

AbortController 正如我们所知道的&#xff0c;fetch 返回一个 promise。JavaScript 通常并没有“中止” promise 的概念。那么我们怎样才能取消一个正在执行的 fetch 呢&#xff1f;例如&#xff0c;如果用户在我们网站上的操作表明不再需要某个执行中的 fetch。 为此有一个…

【kettle006】kettle访问华为openGauss高斯数据库并处理数据至execl文件

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下华为openGauss高斯数据库相关知识体系 3.欢迎批评指正&#xff0c;跪谢…

Spring Boot应用部署 - JAR包Docker部署

JAR包Docker部署 要使用Docker部署Spring Boot应用&#xff0c;需要创建一个Dockerfile来定义如何构建Docker镜像&#xff0c;并且可能还需要在Maven构建脚本中集成Docker插件以简化构建过程。以下是详细的步骤&#xff1a; 1. 创建Dockerfile 在Spring Boot项目的根目录下创…

【实时数仓架构】方法论(未完)

笔者不是专业的实时数仓架构&#xff0c;这是笔者从其他人经验和网上资料整理而来&#xff0c;仅供参考。写此文章意义&#xff0c;加深对实时数仓理解。 实时数仓背景和场景 一、实时数仓架构技术演进 1.1、四种架构演进 1&#xff09;离线大数据架构 一种批处理离线数据分…

胡写乱写哈哈哈

message.from() 获取消息的发送者名称 const bot new Wechaty() .on(message, async message > { //这条消息是谁发送的const contact message.from()//这条消息的文本内容const text message.text()//这条消息是哪个群聊中发送的const room message.room()if (room) {/…

电脑开机后卡在开机LOGO画面如何排查处理

当电脑开机后长时间停滞在开机LOGO画面,无法继续进入操作系统,这一现象常令用户困扰不已。本文将深入探讨导致此类问题的多种可能原因,并提供相应的解决方法,帮助你有效地诊断和排除故障。 硬件故障或接触不良 1. 硬盘问题:硬盘是系统启动的关键组件,其故障或数据线接触…

css如何去掉重叠部分的边框,CSS中nth-child不生效

css如何去掉重叠部分的边框 div使用负的margin&#xff0c;margin-right:-1px&#xff1b;table表格设置边框后的重叠&#xff0c;border-collapse: collapse CSS中nth-child不生效 <body><ul><li><a><span class"item"></span&…