OpenCV界面编程

《OpenCV计算机视觉开发实践:基于Python(人工智能技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书

OpenCV的Python开发环境搭建(Windows)-CSDN博客

OpenCV也支持有限的界面编程,主要是针对窗口、控件和鼠标事件等,比如滑块。有了这些窗口和控件,可以更好地展现图像并调节图像的一些参数。这些界面编程主要由High-level GUI(高层次图形用户界面)模块支持。

在High-level GUI模块中,用于新建窗口的函数是nameWindow,同时可以指定窗口的类型。该函数声明如下:

复制代码
namedWindow(winname[, flags]) -> None

其中,参数winname表示新建的窗口名称,自己随便取;flags表示窗口的标识(一般默认为cv2.WINDOW_AUTOSIZE,表示窗口大小自动适应图片大小,并且不可手动更改;cv2.WINDOW_NORMAL表示用户可以改变这个窗口大小;cv.WINDOW_OPENGL窗口创建的时候会支持OpenGL)。

在High-level GUI模块中,用于显示窗口的函数是imshow,声明如下:

复制代码
imshow(winname, mat) -> None

其中,参数winname表示显示的窗口名,可以使用namedWindow函数创建窗口,如果不创建,imshow函数将自动创建;image表示需要显示的图像。

根据图像的深度,imshow函数会自动对其显示灰度值进行缩放,规则如下:

(1)如果图像数据类型是8U(8位无符号),就直接显示。

(2)如果图像数据类型是16U(16位无符号)或32S(32位有符号整数),那么imshow函数内部会自动将每个像素值除以256并显示,即将原图像素值的范围由[0~255×256]映射到[0~255]。

(3)如果图像数据类型是32F(32位浮点数)或64F(64位浮点数),那么imshow函数内部会自动将每个像素值乘以255并显示,即将原图像素值的范围由[0~1]映射到[0~255](注意:原图像素值必须归一化)。

需要注意的一点就是,imshow之后必须跟上waitKey函数,否则显示窗口将一闪而过,不会驻留屏幕。waitKey函数声明如下:

复制代码
waitKey([delay]) -> retval

其中,参数delay表示一个延时值,单位为ms,默认为0,永久延时,一直等待,直到用户按键。如果在指定时间之前没有按下任何键,就返回-1;如果在指定时间之前按下任何键,就返回按键的对应值。

当delay≤0时,函数waitKey无限地等待一个键事件,当delay>0时,则等待delay毫秒。由于操作系统在切换线程之间有一个最短的时间间隔,因此该函数不会正好等待delay毫秒,而是等待比delay毫秒长一些,这取决于当时计算机上运行的其他操作。如果在指定时间之前没有按下任何键,就返回按下键的代码或-1。注意,此函数是HighGUI模块中唯一可以获取和处理事件的方法,因此需要定期调用它以进行正常的事件处理,除非HighGUI是在负责事件处理的环境中使用的。

另外,只有在至少创建了一个HighGUI窗口并且该窗口处于活动状态时,该函数才起作用。如果有几个HighGUI窗口,那么其中任何一个都可以是活动的。

【例3.5】 新建窗口并显示5秒后退出

复制代码
import cv2 as cv 
import numpy as np #导入numpy模块 
img = cv.imread('p1.jpg')
cv.namedWindow("myimg", cv.WINDOW_AUTOSIZE); 
cv.imshow("myimg",img);#在"窗口1"中输出图片
cv.waitKey(5000);#等待5秒,程序自动退出

在上述代码中,首先利用函数imread读取当前目录下的p1.jpg文件,接着用函数namedWindow新建一个窗口,并用参数WINDOW_AUTOSIZE表示窗口大小自动适应图片大小,并且不可手动更改;最后调用waitKey函数等待5秒后程序自动退出。

运行工程,结果如图3-6所示。

图3‑6

相关推荐
小雷FansUnion1 小时前
深入理解MCP架构:智能服务编排、上下文管理与动态路由实战
人工智能·架构·大模型·mcp
资讯分享周1 小时前
扣子空间PPT生产力升级:AI智能生成与多模态创作新时代
人工智能·powerpoint
叶子爱分享3 小时前
计算机视觉与图像处理的关系
图像处理·人工智能·计算机视觉
鱼摆摆拜拜3 小时前
第 3 章:神经网络如何学习
人工智能·神经网络·学习
一只鹿鹿鹿3 小时前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程
张较瘦_3 小时前
[论文阅读] 人工智能 | 深度学习系统崩溃恢复新方案:DaiFu框架的原位修复技术
论文阅读·人工智能·深度学习
cver1233 小时前
野生动物检测数据集介绍-5,138张图片 野生动物保护监测 智能狩猎相机系统 生态研究与调查
人工智能·pytorch·深度学习·目标检测·计算机视觉·目标跟踪
学技术的大胜嗷3 小时前
离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制
人工智能·深度学习·yolo·目标检测·机器学习
还有糕手3 小时前
西南交通大学【机器学习实验10】
人工智能·机器学习
江瀚视野3 小时前
百度文心大模型4.5系列正式开源,开源会给百度带来什么?
人工智能