1 cv2.imshow() 在指定窗口显示图像

作用:该函数将图像在特定的窗口进行显示。如果该窗口是利用cv::WINDOW_AUTOSIZE标志创建的,则会使用图像的原始分辨率进行显示,然而会受限于屏幕的分辨率。也就是如果图像大于屏幕的分辨率,则无法完整的查看了。

语法格式:cv2.imshow(winname, mat)

参数说明:

  1. winname 窗口名。如果窗口名为winname的窗口不存在,则自动创建窗口
  2. mat 要显示的图像数据矩阵

2 cv2.moveWindow() 移动窗口

作用:该函数的作用是将窗口放到指定的位置去

语法格式:cv2.moveWindow(winname, x, y)

参数说明:

  1. winname 窗口名
  2. x、y 指窗口的左上角在屏幕的坐标

3 cv2.namedWindow() 命名窗口

作用:创建窗口。如果已经存在相同的窗口名称之后,该函数将会不做任何事情。

语法格式:cv2.namedWindow(   winname[, flags])

参数:

  1. winname 窗口名
  2. flags 标志位,如下:
  • cv2.WINDOW_NORMAL: 使得你能够改变窗口的尺寸
  • cv2.WINDOW_AUTOSIZE:  会自适应图像的尺寸(默认)。
  • 上面2个参数可以分别用0,1代替。

4 cv2.waitkey() 等待函数

语法格式:cv2.waitkey(delay)

参数说明:delay 延时的时间。单位ms。

返回值:若在给定延时内有按键触发,则返回键值。没有键盘输入,则返回-1.

作用:cv2.waitKey()是一个键盘绑定函数。它的时间量度是毫秒ms。函数会等待(delay)毫秒,看是否有键盘输入。若有键盘输入,则返回按键的ASCII值。没有键盘输入,则返回-1.一般设置为0,它将无限等待键盘的输入。

  1. 一般在 imshow 的时候 , 如果设置 waitKey(0) , 代表按任意键继续。
  2. 显示视频时,延迟时间需要设置为 大于0的参数。delay > 0时 , 延迟 ”delay”ms , 在显示视频时这个函数是有用的 , 用于设置在显示完一帧图像后程序等待 ”delay”ms 再显示下一帧视频 ; 如果使用 waitKey(0) 则只会显示第一帧视频

5 cv2.destroyAllWindows() 删除图像显示窗口

语法格式:cv2.destroyAllWindows([winname])

参数说明

  • winname 窗口名。不指定任何参数,则删除所有窗口;指定参数,则删除特定的窗口winname。

6 示例

import cv2
import matplotlib.pyplot as plt
import numpy as np

img  = cv2.imread('C:\\Users\\xxx\\Downloads\\lena.jpg')  # 彩色图
img1 = cv2.imread('C:\\Users\\xxx\\Downloads\\lena.jpg',cv2.IMREAD_GRAYSCALE) #灰度图
cv2.namedWindow('picture1',0) #创建一个能改变大小的窗口
cv2.imshow('picture',img)          #显示图像,窗口不存在,就自动创建
cv2.imshow('picture1',img1)      #显示图像,在已存在的窗口
cv2.waitKey(0)                          #按任意键
cv2.moveWindow('picture',0,0) # 将窗口移动至屏幕左上方
cv2.waitKey(0)                           #按任意键
cv2.destroyAllWindows()          #删除所有窗口

运行结果如下:

  1. 会在屏幕上显示两张图像,一个是灰度图(窗口名为picture1, 预先创建的窗口,可改变窗口的大小),一个是彩色图(窗口名为picture,自动创建的,不能改变窗口的大小
  2. 按任意键后,彩色图的窗口移动到屏幕的左上角(0,0)处
  3. 再任意键后,显示窗口全部被删除