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;
}

在这里插入图片描述

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

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

相关文章

走进水墨世界,寻找传统之美

为深入了解中国传统水墨文化的底蕴及其在当代的价值&#xff0c;2024年2月16日&#xff0c;曲阜师范大学计算机学院“古韵新声&#xff0c;格物致‘知’”实践队的队员王涵智走进山东省高唐县巩德春艺术馆展开社会实践。实践队员以探访艺术馆为契机&#xff0c;领略传统水墨文化…

Academic Inquiry|投稿状态分享(ACS,Wiley,RSC,Elsevier,MDPI,Springer Nature出版社)

作为科研人员&#xff0c;我们经常会面临着向学术期刊投稿的问题。一般来说&#xff0c;期刊的投稿状态会在官方网站上进行公示&#xff0c;我们可以通过期刊的官方网站或者投稿系统查询到我们投稿的论文的状态&#xff0c;对于不同的期刊在投稿系统中会有不同的显示。 说明&am…

如何查看HP打印机的Wi-Fi密码?这里提供三种方法

如果你计划通过Wi-Fi Direct从笔记本电脑或智能手机无线打印&#xff0c;则需要HP打印机密码。有了这个功能&#xff0c;打印机可以创建自己的Wi-Fi网络&#xff0c;你不需要依赖其他Wi-Fi网络。你只需转到设备的Wi-Fi设置&#xff0c;将其连接到Wi-Fi Direct&#xff0c;然后立…

OpenAI全新发布的Sora,到底意味着什么?

16日凌晨&#xff0c;OpenAI发布了文本视频的工具&#xff08;text-do-video&#xff09;Sora&#xff0c;整个世界再次被震撼。 Sora的出现&#xff0c;到底意味着什么&#xff1f; 目录 Sora的背景与概述Sora是什么&#xff1f;能为我们做些什么&#xff1f;存在的一些问题 文…

字节8年经验之谈 —— 详解python自动化单元测试!

1. 前言 说实话&#xff0c;除了测试要求&#xff0c;我实在不知道写单元测试有什么意义&#xff0c;一个函数50行代码&#xff0c;有多种参数组合&#xff0c;为了测试这些条件&#xff0c;需要编写测试用例&#xff0c;写完的测试用例比需要测试的函数还长。也就是说&#x…

14-树-二叉树的最小深度

这是树的第14篇算法&#xff0c;力扣链接。 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出…

ubuntu18.04运行DynaSLAM,实例分割+多视图几何+背景修复

博主电脑上之前就安装了ORB-SLAM2所需的环境&#xff0c;所以baseline为ORB-SLAM2的算法几乎都是直接./build.sh即可。需要我们安装的内容就是python的环境&#xff0c;Pytorch或者TensorFlow&#xff0c;以及下载预训练模型和数据集。 一、安装ORB-SLAM2所需的库 C11 or C0x…

全网Bento和3D?点评2024年UX/UI设计趋势

2024年已经到来&#xff0c;对于UX/UI设计领域来说&#xff0c;这可能是过去若干年来UI / UX趋势最统一、最确定的一年。在接下来的文章中&#xff0c;笔者将在点评各个设计趋势的同时&#xff0c;分析现象背后的原因&#xff0c;并给新入行的设计师一些成长的建议。 什么是UI和…

数据结构-邻接矩阵

介绍 邻接矩阵&#xff0c;是表示图的一种常见方式&#xff0c;具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。 假设一共有以下顶点&#xff0c;其连接关系如图所示 那么&#xff0c;怎么表示它们之间的连接关系呢&#xff1f; 我们发现&#xff0c;各条边所连接的都…

C语言题目:一些简单的编程和递归题目

以下的题目的较难的点都在注释里面讲解清楚了 一. 1.喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&#xff08;编程实现&#xff09;。 代码实现&#xff1a; int main() {int money 20;int price 1;int e…

C#,二进制数的非0位数统计(Bits Count)的算法与源代码

计算一个十进制数的二进制表示有多少位1&#xff1f; 1 遍历法&#xff08;递归或非递归&#xff09; 使用循环按位统计1的个数。 2 哈希查表法 利用一个数组或哈希生成一张表&#xff0c;存储不同二进制编码对应的值为1的二进制位数&#xff0c;那么在使用时&#xff0c;只…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(五)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

控制程序执行流程

资源 资源下载 【免费】突破密码认证程序&#xff08;修改函数返回地址&#xff09;资源-CSDN文库 资源内容 源码 在上一篇文章里 修改函数返回地址-CSDN博客 流程 对程序进行编译 思路 了解栈的情况&#xff08;函数地址、缓冲区偏移量&#xff09;程序中密码认证的地…

SHERlocked93 的 2023 年终总结

工作之后感觉一年一年过的太快&#xff0c;没有个记录连回忆都无从回忆起&#xff0c;之前的年终总结&#xff1a; SHERlocked93 的 2022 年终总结SHERlocked93 的 2021 年终总结SHERlocked93 的 2020 年终总结SHERlocked93 的 2019 年终总结SHERlocked93 的 2018 年终总结SHER…

js设计模式:发布订阅模式

作用: 也称之为消息队列模式,或者pubsub模式 发布者发布消息(也可以理解为调用某函数),订阅者会收到消息,并且发布者可以将一些参数传递给订阅者。 是一种常用的参数传递方法,经典的pubsub.js,vue2中的$bus等都是用的这种模式。 示例: <!DOCTYPE html> <html lan…

模仿 STM32 驱动开发格式实验

1.模仿 STM32 寄存器定义 为了开发方便&#xff0c; ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件&#xff0c;在这个文件 里面定义了 STM32F103 所有外设寄存器&#xff0c;我们可以使用其定义的寄存器来进行开发&#xff0c;比如我 们可以用如下代码来初始…

kube-ovn默认vpc

下面图是kube-ovn默认vpc的拓扑 默认vpc kube-ovn安装完成后会自带一个默认vpc是ovn-cluster&#xff0c;并且会在这个默认vpc下创建ovn-default子网、join子网&#xff0c; 默认子网 ovn-default是ovn-cluster下的默认子网&#xff0c;在创建pod时没有指定子网时会使用这个…

Python编程中的异常处理

什么是异常&#xff1f; 程序错误&#xff08;errors&#xff09;有时也被称为程序异常&#xff08;exceptions&#xff09;&#xff0c;这是每个编程人员都会经常遇到的问题。在过去&#xff0c;当遇到这类情况时&#xff0c;程序会终止执行并显示错误信息&#xff0c;通常是…

JAVA之Java线程核心详解

Java线程核心 1.进程和线程 进程&#xff1a;进程的本质是一个正在执行的程序&#xff0c;程序运行时系统会创建一个进程&#xff0c;并且给每个进程分配独立的内存地址空间保证每个进程地址不会相互干扰。同时&#xff0c;在 CPU 对进程做时间片的切换时&#xff0c;保证进程…

微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

&#x1f3f7;️个人主页&#xff1a;鼠鼠我捏&#xff0c;要死了捏的主页 &#x1f3f7;️系列专栏&#xff1a;Golang全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…