opencv图像视频的加载和显示

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

(一)函数

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

  • 第二个参数flags是可选参数,其可选值及对应的意义如下:

    • 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()
12-02 07:12