实战OpenCV之图像显示
基础入门
OpenCV提供的功能非常多,图像显示是最基础也是最直观的一部分。它让我们能够直观地看到算法处理后的效果,对于调试和验证都至关重要。在OpenCV中,图像显示主要依赖于以下四个关键的数据结构和函数。
1、Mat类。这是OpenCV中最基本的数据结构,代表了一个多维的数组,通常用于存储图像数据。cv::Mat对象可以用来存储灰度图像、彩色图像,以及其他类型的矩阵数据。
2、imshow函数。用于在指定窗口显示图像,函数原型为imshow(winname, mat)。其中,winname是窗口的名称,mat是要显示的图像矩阵,通常为cv::Mat对象。
3、namedWindow函数。创建一个窗口,并为它分配一个名称。这一步虽然不是必须的,但在实际应用中通常会先创建窗口再显示图像,以确保窗口大小和位置符合预期。函数原型为namedWindow(winname, flags),其中,flags可以用来指定窗口的一些属性,比如:是否可调整大小等。
4、waitKey函数。用于等待键盘事件发生,即等待用户按下某个键。这对于图像显示至关重要,因为如果没有它,图像窗口会立即关闭。函数原型为waitKey(delay),参数delay指定了等待的时间,以毫秒为单位。如果设置为0,则表示无限期等待。
实战解析
下面的实战代码读取一张图片并显示在屏幕上,直到用户按下任意键后关闭窗口。
第一行和第二行引入了OpenCV库的主要头文件,并声明使用cv命名空间,这样就不必在每次调用OpenCV函数时都加上cv::前缀。
在main函数中,我们使用imread函数尝试从指定路径(这里是"OpenCV.png",实际使用时,应替换为真实图片路径)读取图像,并将其存储在一个名为image的Mat对象中。接下来,判断image是否为空,即检查图像是否被成功读取。如果不为空,则输出错误信息并返回-1,结束程序执行。
然后,我们使用namedWindow函数创建一个名为"Image Show"的窗口,并设置了标志WINDOW_NORMAL,以允许用户调整窗口的大小。通过imshow函数,在刚刚创建的窗口中显示image图像。
最后,调用waitKey(0)函数,使程序暂停并等待用户按下任何键盘按键。参数0意味着程序将无限制地等待,直到接收到键盘输入。当用户按键后,调用destroyAllWindows()函数来关闭所有由OpenCV创建的窗口。
#include <opencv2/opencv.hpp>
using namespace cv;#include <iostream>
using namespace std;int main()
{// 读取图像,请替换为你自己的图片路径Mat image = imread("OpenCV.png");// 检查图像是否被正确读取if(image.empty()){cout << "Can not open or find the image" << endl;return -1;}// 创建一个名为"Image Show"的窗口,WINDOW_NORMAL允许调整窗口大小namedWindow("Image Show", WINDOW_NORMAL);// 在窗口中显示图像imshow("Image Show", image);// 等待用户按键,然后关闭窗口;0表示无限等待,直到用户按键waitKey(0);// 关闭所有窗口destroyAllWindows();return 0;
}
窗口自适应
在某些场景下,我们希望窗口能自动适应图像的尺寸。此时,可以使用resizeWindow函数,并传入图像的宽度和高度。
namedWindow("Image Show", WINDOW_NORMAL);
// image.cols代表图像的宽度, image.rows代表图像的高度
resizeWindow("Image Show", image.cols, image.rows);
imshow("Image Show", image);
执行上面的示例代码,运行效果可参考下图。

相关文章:
实战OpenCV之图像显示
基础入门 OpenCV提供的功能非常多,图像显示是最基础也是最直观的一部分。它让我们能够直观地看到算法处理后的效果,对于调试和验证都至关重要。在OpenCV中,图像显示主要依赖于以下四个关键的数据结构和函数。 1、Mat类。这是OpenCV中最基本的…...
I2C的10-bit地址空间
10-bit地址空间: I2C支持 10-bit的设备地址,此时的时序如下图所示: 在 10-bit地址的 I2C系统中,需要两个帧来传输 slave的地址。第一个帧的前 5个 bit固定为 b11110,后接 slave地址的高 2位,第 8位仍然是 …...
TinyWebserver的复现与改进(6):定时器处理非活动连接
如果客户端长时间没有动作,会占用了许多连接资源,严重影响服务器的性能。因此需要通过实现一个服务器定时器,处理这种非活跃连接,释放连接资源。 定时器处理流程 SIGALARM触发:整个流程开始于一个 SIGALARM 信号&…...
ThinkPHP5 5.0.23 远程代码执行漏洞
目录 1、启动环境 2、漏洞利用 3、更改传参方式 4、修改参数 5、发送数据 1、启动环境 docker-compose up -d 2、访问靶机ip端口号8080 2、漏洞利用 使用burpsuite抓包软件抓包 3、更改传参方式 将 GET传参改为POST传参 4、修改参数 url参数 /index.php?scaptcha post参…...
C++鼠标键盘操作自动化
C鼠标键盘操作自动化 #pragma once #include <Windows.h> enum KEYS{A 65,W87,S83,D68,SHIFTVK_LSHIFT,ALT18,Tilde 126,//~TABVK_TAB,B66,SPACEVK_SPACE,ESCVK_ESCAPE,Q81 }; enum MOUSE {ML,MW,MR//左,中,右 }; class simulator//模拟器 { pu…...
多个主流Python GUI库全面解析,助你用Python轻松构建精美界面
Python 作为一门易学易用的编程语言,在各个领域都拥有广泛的应用。而 GUI (Graphical User Interface) 编程更是让 Python 变得更加灵活,可以帮助我们创建各种各样的桌面应用,为用户提供直观的交互体验。本文将介绍几个Python GUI 编程中常用…...
Kotlin学习-01创建kotlin学习
安装idea https://www.jetbrains.com/zh-cn/ 创建项目 选择kotlin 修改Main.kt fun main() {print("Hello World!") }运行...
Java、python、php版的企业单位考勤打卡管理系统的设计与实现(源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...
在IntelliJ IDEA中使用Git推送项目
去gitee网站注册用户 gitee网站地址:https://gitee.com/ github网站地址:https://github.com/ 一、创建仓库 以下以gitee为例进行介绍,github操作雷同。 1、创建仓库 点击页面右上方的"“并选择"创建仓库” 2、设置仓库相关信息 首先输入仓库名&…...
CNN代码实战
CNN的原理 从 DNN 到 CNN (1)卷积层与汇聚 ⚫ 深度神经网络 DNN 中,相邻层的所有神经元之间都有连接,这叫全连接;卷积神经网络 CNN 中,新增了卷积层(Convolution)与汇聚(…...
迁移学习代码复现
一、前言 说来可能令人难以置信,迁移学习技术在实践中是非常简单的,我们仅需要保留训练好的神经网络整体或者部分网络,再在使用迁移学习的情况下把保留的模型重新加载到内存中,就完成了迁移的过程。之后,我们就可以像训练普通神经网络那样训练迁移过来的神经网络了。 我们…...
Elasticsearch(ES)常用命令
常用运维命令 一、基本命令1.1、查看集群的健康状态1.2、查看节点信息1.3、查看索引列表1.4、创建索引1.5、删除索引1.6、关闭索引1.7、打开索引1.8、查看集群资源使用情况(各个节点的状态,包括磁盘,heap,ram的使用情况࿰…...
C/C++ 不定参函数
C语言不定参函数 函数用法总结 Va_list 作用:类型定义,生命一个变量,该变量被用来访问传递给不定参函数的可变参数列表用法:供后续函数进调用,通过该变量访问参数列表 typedefchar* va_list; va_start 作用ÿ…...
C语言——函数专题
1.概念 在C语言中引入函数的概念,有些翻译为子程序。C语言中的函数就是一个完成某项特定任务的一小段代码,这个代码是有特殊的写法和调用方法的。一般我们可以分为两种函数:库函数和自定义函数。 2.库函数 C语言国际标准ANSIC规定了一些常…...
springboot打可执行jar包
1. pom文件如下 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><m…...
【SQL】科目种类
目录 题目 分析 代码 题目 表: Teacher ------------------- | Column Name | Type | ------------------- | teacher_id | int | | subject_id | int | | dept_id | int | ------------------- 在 SQL 中,(subject_id, dept_id) 是该表的主键。 该表…...
【深度学习】【语音】TTS,最新TTS模型概览,扩散模型TTS,MeloTTS、StyleTTS2、Matcha-TTS
文章目录 基础介绍对比基础介绍 MeloTTS: MeloTTS 是 MyShell.ai 开发的一个多语言语音合成模型,支持包括英语、西班牙语、法语、中文、日语和韩语等多种语言。它以高质量的语音合成为特色,尤其擅长处理中英混合内容。该模型优化了在 CPU 上的实时推理能力,使其在多种应用场…...
【论文笔记】LION: Linear Group RNN for 3D Object Detection in Point Clouds
原文链接:https://arxiv.org/abs/2407.18232 简介:Transformer在3D点云感知任务中有二次复杂度,难以进行长距离关系建模。线性RNN则计算复杂度较低,适合进行长距离关系建模。本文提出基于窗口的网络线性组RNN(即对分组…...
打造高可用集群的基石:深度解析Keepalived实践与优化
高可用集群 集群类型 集群类型主要分为负载均衡集群(LB)、高可用集群(HA)和高性能计算集群(HPC)三大类。每种集群类型都有其特定的应用场景和优势。 1. 负载均衡集群(LB) 负载均衡集…...
Web大学生网页作业成品——环保主题介绍网页网站设计与实现(HTML+CSS)(5个页面)
🎉🎉🎉 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…...
为Adafruit CLUE开发板设计超薄可拆卸3D打印外壳:从建模到装配全指南
1. 项目概述:为你的CLUE开发板“量体裁衣”如果你手头有一块Adafruit CLUE开发板,大概率会和我有同样的感受:这块板子功能强大,集成了屏幕、按钮、一堆传感器,但裸露的电路板和元器件总让人有点“心疼”,怕…...
第一次喝精酿怎么品
精酿酒吧新手指南:四步解锁品酒技巧,轻松告别困惑第一次走进精酿酒吧,新手常因陌生酒名和风味描述困惑。其实品精酿很简单,掌握几个步骤即可入门——这种认真品酒的态度,早在中世纪就有,欧洲修士们酿造后会…...
亿图脑图高级技能:从思维建模到生产力提升的完整指南
1. 项目概述与核心价值最近在整理个人知识库和项目文档时,我一直在寻找一个能让我思维更清晰、协作更高效的“大脑外挂”。市面上思维导图工具不少,但要么功能臃肿、学习曲线陡峭,要么过于轻量、难以应对复杂的结构化思考。直到我深度体验并拆…...
CloudBase-MCP:基于MCP协议桥接本地应用与云服务的实践指南
1. 项目概述:一个连接云与本地应用的“智能接线员”如果你正在开发一个应用,需要让它在本地服务器上运行,同时又想无缝地调用云上的各种能力——比如对象存储、数据库、AI模型或者消息队列,你会怎么做?传统的方式可能是…...
【NotebookLM移动端避坑白皮书】:上线首月超12万用户踩中的3类权限陷阱与2种文档同步丢失根因分析
更多请点击: https://intelliparadigm.com 第一章:NotebookLM移动端避坑白皮书导论 NotebookLM 是 Google 推出的基于用户上传文档构建个性化 AI 助手的实验性工具,其移动端(iOS/Android)虽提供便捷访问入口ÿ…...
基于CircuitPython与BLE构建多探头无线温度监测系统
1. 项目概述:一个无线温度监控的“瑞士军刀” 如果你和我一样,喜欢在周末慢烤一块牛排,或者沉迷于培养天然酵母做面包,那你一定理解同时盯着好几个温度计的烦恼。厨房里烟雾缭绕,烤箱里正烤着东西,发酵箱里…...
地理学者必抢的AI协同时代入场券:NotebookLM+QGIS工作流搭建指南(仅限首批内测用户验证版)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM地理学研究辅助的范式革命 从静态文献到动态知识图谱 NotebookLM 通过语义切片与向量对齐技术,将地理学经典文献(如《人文地理学导论》《自然地理学原理》ÿ…...
人类不擅长做出复杂的决策。人工智能可以指出这些错误。
图片来源:图片由编辑团队使用人工智能生成,仅供参考。来源:https://techxplore.com/news/2026-05-humans-bad-complex-decisions-ai.html当罗列优缺点不足以解决问题时,康奈尔大学研究人员开发的一种新型决策工具可以利用人工智能…...
数据库——(DB、DBMS、SQL)
数据库——(DB、DBMS、SQL) 前言数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满…...
别再混淆了!给数据科学新手的平稳性、自相关性核心概念白话图解
时间序列分析入门:用生活化类比理解平稳性与自相关性 刚接触时间序列分析时,你是否曾被"平稳性"和"自相关性"这些术语搞得一头雾水?就像第一次学游泳时,教练说的"打腿节奏"和"换气时机"一…...
