当前位置: 首页 > news >正文

C++-opencv的imread、imshow、waitkey、namedWindow

在C++中使用OpenCV时,imreadimshow是两个非常基础且常用的函数,用于读取图像和显示图像。以下是这两个函数的简要说明和如何一起使用它们的示例。

imread函数

imread用于从指定的文件路径读取图像。它将图像读入为cv::Mat对象,这是OpenCV中存储图像的主要数据结构。

cv::Mat imread(const String& filename, int flags = IMREAD_COLOR);

filename:图像文件的路径。
flags:读取图像的方式。常用的标志包括:
cv::IMREAD_COLOR:以彩色模式读取图像,默认选项。
cv::IMREAD_GRAYSCALE:以灰度模式读取图像。
cv::IMREAD_UNCHANGED:读取图像包含alpha通道。

imshow函数

imshow用于在指定的窗口中显示图像。如果窗口不存在,imshow会自动创建一个窗口。

void imshow(const String& winname, InputArray mat);

winname:窗口的名称。如果窗口已经存在,这个调用会更新窗口中的图像。
mat:要显示的图像,通常是由imread读取得到的cv::Mat对象。

waitKey函数

在C++中使用OpenCV时,waitKey函数是用于等待一个键盘事件的函数,它对于图像显示以及处理用户输入是非常关键的。这个函数暂停程序的执行,等待用户按下任何键或等待指定的时间。

int waitKey(int delay = 0);

delay:等待按键事件的时间长度,单位为毫秒。默认值为0,表示无限期等待。如果指定了正数,则函数会等待指定的毫秒数看是否有键盘事件发生;如果在这段时间内有键盘事件,函数会立即返回按键的ASCII码,否则返回-1。

waitKey使用场景

图像显示:waitKey通常与imshow一起使用,以便在显示图像时暂停程序,让用户有机会查看图像。
视频处理:在处理视频或摄像头实时数据时,waitKey可以用来控制帧率,通过在读取每一帧后调用waitKey并传递适当的延迟时间(例如waitKey(30)以大约实现30帧/秒)。
事件处理:通过检查waitKey的返回值,可以实现对特定按键事件的响应,例如退出程序、暂停播放、保存图像等。

waitKey是OpenCV程序中处理用户输入和控制程序流程的一个重要函数,通过合理使用它,可以增加程序的交互性和灵活性。

namedWindow函数

在C++中,OpenCV提供了namedWindow函数来创建一个窗口,这个窗口可以用于显示图像。使用namedWindow是可选的,因为当你使用imshow直接显示图像时,如果没有预先创建窗口,OpenCV会自动创建一个。但是,namedWindow允许你在显示图像之前对窗口进行更多的配置,例如设置窗口的大小、是否可以调整大小等。一般使用namedWindow创建自适应窗口。

void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE)

应用示例

#include<opencv2/opencv.hpp>
#include<quick_opencv.h>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv)
{//读取并显示图像,如果imread返回的Mat对象(src)是空的,打印错误消息并退出程序。Mat src = imread("C:/Users/Desktop/opencv-0/win.png");//B G R 蓝绿红if (src.empty()){printf("could not find the image...\n");return -1;}namedWindow("输入窗口", WINDOW_FREERATIO);//创建一个可以自由调整比例的窗口imshow("输入窗口", src);//等待用户输入并清理资源waitKey(0);destroyAllWindows();return 0;
}

在这里插入图片描述

相关文章:

C++-opencv的imread、imshow、waitkey、namedWindow

在C中使用OpenCV时&#xff0c;imread和imshow是两个非常基础且常用的函数&#xff0c;用于读取图像和显示图像。以下是这两个函数的简要说明和如何一起使用它们的示例。 imread函数 imread用于从指定的文件路径读取图像。它将图像读入为cv::Mat对象&#xff0c;这是OpenCV中…...

开源语音识别faster-whisper部署教程

1. 资源下载 源码地址 模型下载地址&#xff1a; large-v3模型&#xff1a;https://huggingface.co/Systran/faster-whisper-large-v3/tree/main large-v2模型&#xff1a;https://huggingface.co/guillaumekln/faster-whisper-large-v2/tree/main large-v2模型&#xff1a;…...

使用IntelliJ IDEA配置Maven (入门)

在使用IntelliJ IDEA进行Java开发时&#xff0c;配置Maven是至关重要的一步&#xff0c;因为它可以帮助你管理项目的依赖和构建过程。以下是我在使用IntelliJ IDEA配置Maven的实践过程&#xff0c;以及一些技术笔记和职场感悟。 工作实践与项目复盘 下载Maven&#xff1a; 访问…...

汽车金融市场研究:预计2029年将达到482亿美元

汽车金融公司作为汽车流通产业链的重要一环&#xff0c;认真贯彻落实国家有关政策&#xff0c;采取多种措施助力汽车产业发展&#xff0c;为促进推动汽车消费、助力畅通汽车产业链、支持稳定宏观经济大盘发挥了积极作用。 益于国内疫情得到有效控制&#xff0c;我国经济持续稳定…...

关于举办第十五届蓝桥杯大赛电子赛5G全网规划与建设赛项的通知

关于举办第十五届蓝桥杯大赛电子赛 5G全网规划与建设赛项的通知 各相关院校&#xff1a; 第十五届蓝桥杯大赛通知已于2023年9月27日在蓝桥杯大赛官网发布&#xff0c;现就电子赛5G全网规划与建设赛项报名事宜&#xff0c;公布如下&#xff1a; 一、赛项概述 5G全网规划与建设…...

Vue3快速上手(七) ref和reactive对比

一、ref和reactive对比 表格形式更加直观吧&#xff1a; 项目refreactive是否支持基本类型支持不支持是否支持对象类型支持支持对象类型是否支持属性直接赋值不支持&#xff0c;需要.value支持是否支持直接重新分配对象支持&#xff0c;因为操作的.value不支持&#xff0c;需…...

8、内网安全-横向移动RDPKerberos攻击SPN扫描WinRMWinRS

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正 目录 一、域横向移动-RDP-明文&NTLM 1.探针服务&#xff1a; 2.探针连接&#xff1a; 3.连接执行&#xff1a; 二、域横向移动-WinRM&WinRS-明文&NTLM 1.探针可用&#xff1a; 2.连接…...

《数据结构与算法之美》读书笔记

《数据结构与算法之美》读书笔记 写在前面 这本书的大部分内容比较浅显&#xff0c;因此只挑DSAA课程上没有涉及或没有深入讨论的点总结 第二章 数组相关 提高传统数组插入/删除数据效率的方法&#xff1a; 如果插入的数据不要求有序&#xff0c;可以直接把某位的原数据替换…...

C语言—字符数组(3)

可能不是那么的完整&#xff0c;先凑合看吧&#xff0c;如果我学会如何修改以后&#xff0c;我慢慢回来修改的 1.编写程序实现对两个字符串的连接功能&#xff1b; 法一:不使用strcat函数,写程序直接实现&#xff0c;记得添加结束符&#xff0c;不然程序访问数组时候将变得不…...

linux 实用技能

1.查看系统版本 cat /etc/redhat-release cat /etc/redhat-release 2. 查看磁盘实用情况 df du 3.查看内存 top -Hp 2214 4. 网络配置 vi /etc/hostname vi /etc/hosts vi /etc/sysconfig/network-scripts/ifcfgens33 6. sed ‘s/a/b/g’ aaa.txt 替换 7. scp …...

【maya 入门笔记】基本视图和拓扑

1. 界面布局 先看基本窗口布局&#xff0c;基本窗口情况如下&#xff1a; 就基本窗口布局的情况来看&#xff0c;某种意义上跟blender更像一点&#xff08;与3ds max相比&#xff09;。 那么有朋友就说了&#xff0c;玛格基&#xff0c;那blender最下面的时间轴哪里去了&…...

IO 流分类

一、File File 类&#xff08;磁盘操作&#xff09;可以用于表示文件和目录的信息&#xff0c;但是它不表示文件的内容。递归地列出一个目录下所有文件&#xff1a; public static void listAllFiles(File dir) {if (dir null || !dir.exists()) {return;}if (dir.isFile())…...

JVM的主要组成部分,以及它们的作用。JVM中的内存区域有哪些,它们各自的作用是什么?什么是Java的堆内存,它如何影响程序的性能?

JVM的主要组成部分&#xff0c;以及它们的作用 JVM&#xff08;Java虚拟机&#xff09;的主要组成部分包括类加载器&#xff08;Class Loader&#xff09;、运行时数据区&#xff08;Runtime Data Area&#xff09;、执行引擎&#xff08;Execution Engine&#xff09;、本地库…...

Qt QWidget以及各种控件、布局 核心属性(适合入门使用时查询)

目录 1. QWidget核心属性 2. 按钮类控件 2.1 PushButton 核心属性 2.2 RadioButton 核心属性 2.3 CheckBox 和 Tool Button 核心属性 3. 显示类控件 3.1 Label 核心属性 3.2 LCDNumber 核心属性 3.3 ProgressBar 核心属性 3.4 Calendar Widget 核心属性 4. 输入类控…...

svg图片构造QGraphicsSvgItem对象耗时很长的问题解决

目录 1. 问题的提出 2. 问题解决 1. 问题的提出 今天通过一张像素为141 * 214&#xff0c;大小为426KB的svg格式的图片构造QGraphicsSvgItem对象&#xff0c;再通过Qt的Graphics View Framework框架&#xff0c;将QGraphicsSvgItem对象显示到场景视图上&#xff0c;代码如下&…...

边坡位移监测设备:守护工程安全的前沿科技

随着现代工程建设的飞速发展&#xff0c;边坡位移监测作为预防山体滑坡、泥石流等自然灾害的重要手段&#xff0c;日益受到人们的关注。边坡位移监测设备作为这一领域的关键技术&#xff0c;以其高精度、实时监测的特点&#xff0c;成为守护工程安全的重要武器。 一、边坡位移…...

Qt使用单例模式读取xml文件

Qt使用单例模式读取xml文件 一、单例模式介绍1、什么是单例模式2、为什么使用单例模式3、什么情况下使用单例模式4、使用单例模式需要注意哪些问题线程安全 5、单例模式的类型6、单例类的特点 2、单例模式的实现2.1懒汉式2.2饿汉式 一、单例模式介绍 1、什么是单例模式 单例模…...

备战蓝桥杯 Day6(学习动态规划)

引入 支付问题 假设有无限多的硬币&#xff0c;硬币面值为1,5,11。现在需要支付15元&#xff0c;问最少使用的硬币数&#xff1f; 贪心策略&#xff1a;1511*11*4&#xff0c;145 真正的答案153*5 3 dp的两个性质 最优子结构无后效性 dp的两大要素 1.状态2.状态转移方程 思路…...

【uniapp】自定义步骤条样式

代码实现 <view class"steps-wrap"><view class"flex-box"><view class"number active-number">1</view><view class"desc active-desc">步骤1</view><view :class"[line, activeStep …...

UE5 C++ UObject实例化

一.创建UObject C类 在MyObject中声明结构体FMyDataTableStruct 在MyPawn里面&#xff0c;先将头文件里包含 MyObject.h 在MyPawn中声明一个UMyObject类型的指针 TSubclassOf 是提供 UClass 类型安全性的模板类。例如您在创建一个投射物类&#xff0c;允许设计者指定伤害类型…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...