opencv学习一:namedWindow()创建和显示窗口

文章目录

  • opencv图像视频的加载和显示
    • 一、namedWindow()创建和显示窗口
      • (一)函数
        • 1.namedWindow()创建命名窗口
        • 2.imshow() 显示窗口
        • 3.destroyAllwindws()摧毁窗口
        • 4.resizeWindow() 改变窗口大小
        • 5.waitKey() 等待用户输入
      • (二)代码

opencv图像视频的加载和显示

一、namedWindow()创建和显示窗口

(一)函数

1.namedWindow()创建命名窗口
None = cv.namedWindow(winname,[flags])
  • 第一个参数winname表示窗口的名字,是一个字符串类型的变量

  • 第二个参数flags是可选参数,其可选值及对应的意义如下:
    注意:以下八种可选参数是针对OpenCV4.x版本的,OpenCV3.x只支持WINDOW_NORMAL、WINDOW_AUTOSIZE和WINDOW_OPENGL三种可选参数。

    • cv2.WINDOW_NORMAL

      在WINDOW_NORMAL模式下,操作窗口的用户可以随意调整窗口大小(不固定窗口的宽高比例),您可对全屏显示的大尺寸图像自由调整到自己觉得适合的大小。

    • cv2.WINDOW_AUTOSIZE

      在WINDOW_AUTOSIZE模式下,操作窗口的用户不能改变窗口的大小,窗口的大小取决于图像的大小。

    • cv2.WINDOW_OPENG

      在WINDOW_OPENGL模式下,创建的窗口可支持OPENGL。
      OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。

    • cv2.WINDOW_FULLSCREEN

      在WINDOW_FULLSCREEN模式下,创建的窗口以图像的实际尺寸显示,并且不能进行缩放。
      注意:这里的全屏并不是大家通理解的全屏效果,只有一幅图像的尺寸超过了显示器的分辨率尺寸,才体现为大家通常理解的全屏效果。

    • cv2.WINDOW_FREERATIO

      在WINDOW_FREERATIO模式下,窗口可以以任意宽高比例显示,即不固定宽高比例。
      经过实测,WINDOW_FREERATIO模式和WINDOW_NORMAL似乎没有区别。

    • cv2.WINDOW_KEEPRATIO

      在WINDOW_KEEPRATIO模式下,可以对窗口进行缩放,但是窗口的宽高比例保持不变。

    • cv2.WINDOW_GUI_EXPANDED

      在WINDOW_GUI_EXPANDED模式下,窗口可以添加状态栏和工具栏。

    • cv2.WINDOW_GUI_NORMAL

      在WINDOW_GUI_NORMAL模式下,窗口以正常窗口样式显示

2.imshow() 显示窗口
None = imshow(const string& winname,InputArray mat)
  • 第一个参数,const string&类型的winname,填要显示的窗口名称。
  • 第二个参数,InputArray类型的mat,填要显示的图像。没有就填0
3.destroyAllwindws()摧毁窗口
cv2.destroyAllWindows()

在OpenCV中,destroyAllWindows()是一个函数,用于关闭所有已经创建的窗口。它没有任何参数。

4.resizeWindow() 改变窗口大小
cv.resizeWindow(winname, width, height)

第一个参数为窗口名字,后面分别为宽和高,可任意改变窗口尺寸,但实际的窗口尺寸不会超过相机的最大帧尺寸

例:假设相机的最大帧尺寸为640x480,而设置的窗口尺寸为1280x720,使用cv2.resizeWindow()改变窗口尺寸,则窗口的视觉效果为1280x720,但实际为640x480

5.waitKey() 等待用户输入
num = cv2.waitKey(n)
  • waitKey()和waitKey(0):表示无尽等待。直到任意按键按下,显示窗口才会关闭。

  • waitKey(n):等待n==毫秒(ms)==后,显示窗口关闭。

  • num为返回按键的ascii的值

(二)代码

# opencv名字叫做opencv但是导包的时候, 叫做cv2
import cv2
# python函数编码规范, 单词首字母小写, 单词与单词之间用下滑线连接.wait_key# 创建窗口
# cv2.WINDOW_AUTOSIZE不允许修改窗口大小
# cv2.namedWindow('window', cv2.WINDOW_AUTOSIZE)
cv2.namedWindow('window', cv2.WINDOW_NORMAL)
# 更改窗口的大小
cv2.resizeWindow('window', 800, 600)
# 展示名字为window的窗口
cv2.imshow('window', 0)
# 等待按键
# waitKey会返回按键的ascii的值
# 0表示接受任意按键. 如果给其他的整数, 表示等待按键的时间. 单位是毫秒. 
#  可以利用waitkey来销毁窗口, 不用每次都重启python.
key = cv2.waitKey(0)
# key是int型, 最少都是16位, 但是ascii码是8位. 
if key & 0xFF == ord('q'):print('准备销毁窗口')cv2.destroyAllWindows()

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

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

相关文章

python简单进阶之web框架:fastapi使用教程

原文:python简单进阶之web框架:fastapi使用教程 - 知乎 这是简单进阶教程系列第四篇,本系列文章主要介绍那些可以很快上手的进阶库。 我其实学过一段时间Django框架,但是半途而废了,我觉得可能还是简单一点的框架比较适…

智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.象群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

JavaScript 一只青蛙想要过河

一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表 stones(用单元格序号 升序 表示&#xf…

什么是堆内存?参数如何设置?

文章目录 什么是堆内存?参数如何设置? 栈和队列,举个使用场景例子? 什么是堆内存?参数如何设置? 堆内存是指由程序代码自由分配的内存,与栈内存作区分。 在 Java 中,堆内存主要用于…

网络类型解析(基础):探索通信世界的多样面貌

在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。从个人设备之间的直接通信到全球范围的数据传输,不同类型的网络为我们提供了多种连接方式和通信选择。透过对这些网络类型的解析,我们将更好地理解它们的特点、优势和适用场…

JMX的使用

1. 定义和意义 JMX是Java Management Extention的缩写,出发点是让外部通过属性/方法来读取或设置程序状态。对于提供对外服务的程序来说,天生就有这样的能力,Web程序通过HTTP接口对外暴露,RPC应用通过RPC接口暴露。不过带来的问…

ESP32-Web-Server编程- 使用表格(Table)实时显示设备信息

ESP32-Web-Server编程- 使用表格(Table)实时显示设备信息 概述 上节讲述了通过 Server-Sent Events(以下简称 SSE) 实现在网页实时更新 ESP32 Web 服务器的传感器数据。 本节书接上会,继续使用 SSE 机制在网页实时显…

如何优化 Elasticsearch 以获得更好的搜索性能

当今世界,数据大量生成,为了利用数据进行生产,需要对提取的数据进行转换、存储、维护、管理和分析。这些过程只有通过大数据工具所基于的分布式架构和并行处理机制才能实现。Elasticsearch 是最流行的开源数据存储之一,可以满足大…

邻接表表示图进行深度优先搜索,广度优先搜索,最小生成树

图的邻接表定义 下面用邻接表实现图的深度优先搜索和广度优先搜索,用邻接矩阵来实现最小生成树。 图的邻接表:首先定义一个图的邻接表的类,里面包括图的顶点数,图的边数,顶点表数组。由于顶点表数组里存放的都是图的…

P2880 [USACO07JAN] Balanced Lineup G 题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 数据范围与提示完整代码 题目描述 For the daily milking, Farmer John’s N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with…

从兔子说起:了解RabbitMQ消息的多样化【RabbitMQ 二】

🎏:你只管努力,剩下的交给时间 🏠 :小破站 从兔子说起:了解RabbitMQ消息的多样化 第一:消息的可靠性与持久性第二:消息交换机与队列第三:消息确认与拒绝第四:…

深度学习手势识别 - yolo python opencv cnn 机器视觉 计算机竞赛

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

2023年全国职业院校技能大赛“ 信息安全管理与评估” 测试题2

一.单选题 1、下列不属于口令安全威胁的是?( ) A、 弱口令 B、 明文传输 C、 MD5 加密 D、 多账户共用一个密码 2、在学校或单位如果发现自己的计算机感染了病毒,应首先采取什么措施 ( )。 A、断开网络 B、告知领导 C、杀毒 D、重…

C++模板—函数模板、类模板

目录 一、函数模板 1、概念 2、格式 3、实例化 4、模板参数的匹配 二、类模板 1、定义格式 2、实例化 交换两个变量的值,针对不同类型,我们可以使用函数重载实现。 void Swap(double& left, double& right) {double tmp left;left ri…

黑马一站制造数仓实战1

1. 项目目标 一站制造 企业中项目开发的落地:代码开发 代码开发:SQL【DSL SQL】 SparkCore SparkSQL 数仓的一些实际应用:分层体系、建模实现 2. 内容目标 项目业务介绍:背景、需求 项目技术架构:选型、架构 项目环境…

SpringBootWeb案例_03

Web后端开发_06 SpringBootWeb案例_03 登录认证 智能学习辅助系统登录时需要身份验证 1.登录功能 先实现简单的登录功能,在进一步优化。 1.1需求 若账户或密码不存在/密码不正确,则登录失败。 账户密码正确,则登录成功 1.2接口文档 …

git基本概念

一、版本控制概念 1.1 什么是版本控制 1.1.1 手动管理文件版本 1.1.2 版本控制软件 概念:版本控制软件是一个用来记录文件发生的变化,以便将来查阅特定版本修订情况的系统,有时也叫“版本控制系统”。通俗的理解就是把手工管理文件版本的方…

关于电脑提示vcruntime140_1.dll无法继续执行代码的解决办法

vcruntime140_1.dll是Visual C运行时库的一个组成部分,它包含了大量用于支持C应用程序运行时的功能。这个文件通常在开发和使用C程序时被调用,特别是在使用Microsoft Visual Studio进行开发时。vcruntime140_1.dll文件丢失或损坏会导致C程序无法正常运行…

初识:分布式事务Seata-AT模式的事务提交和事务回滚过程详解

分布式事务Seata 1. 本地事务2. 分布式事务3. 实现思路:两阶段提交协议(2PC)3.1 基础理解3.2 2PC的隐患 4. Seata4.1 Seata是什么4.2 Seata的三大角色4.3 Seata一次事务的生命周期4.4 Seata AT模式的设计思路4.4.1 设计思路4.4.1.1 一阶段4.4…

信息化,数字化,智能化是3种不同概念吗?与机械化,自动化矛盾吗?

先说结论: 1、信息化、数字化、智能化确实是3种不同的概念! 2、这3种概念与机械化、自动化并不矛盾,它们是制造业中不同发展阶段和不同层次的概念。 机械化:是指在生产过程中使用机械技术来辅助人工完成一些重复性、单一性、劳…