文章目录
- 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()