OpenCV-Python 展示图像(1)

OpenCV 版本:3.4.3
编程语言:Python
原文:https://docs.opencv.org/3.4.3/dc/d2e/tutorial_py_image_display.html

可以用 cv.imshow(winName, imgMat) 函数在窗口中显示图像。窗口大小会随着图像大小自动调整。

第一个参数是字符串类型,表示窗口名称,可以用不同的窗口名称来创建多个窗口。
第二个参数是要显示的图像数据。

cv.imshow('tmp_window', img)
cv.waitKey(0)
cv.destroyAllWindows()

注意:
必须通过cv.waitKey(dealy) 函数指定窗口延时时间,否则图像无法显示。

窗口延迟

可以用 cv.waitKey(delay) 函数延迟窗口显示时间。其中参数dealy表示要延迟的毫秒数。
由于操作系统是多线程执行,所以严格来说dealy表示最少延迟多少毫秒。

delay 默认值为 0,当 dealy <=0 时,表示永久延迟,直到键盘按下任意键。

该函数会返回按键的代码值,如果在dealy值期间一直没有按,则返回 -1。在64位机器上,返回值需要加 & 0xFF

# 当按下 ESC键时,关闭所有窗口
k = cv.waitKey(0) & 0xFF
if k == 27
    cv.destroyAllWindows()

窗口定义

另外一种场景是先创建一个窗口,然后用这个窗口来显示的图像。在下面的例子中,你可以指定窗口是否能够自动调整大小。

cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()

可以用 cv.namedWindow(winName, flags) 函数定义窗口。

flags 值定义如下:

常量名称 说明
cv.WINDOW_NORMAL 允许手工调整窗口大小
cv.WINDOW_AUTOSIZE 窗口根据图像大小自动调整,无法手工调整
cv.WINDOW_FREERATIO 允许非等比例调整图像
cv.WINDOW_KEEPRATIO 保持等比例调整图像
cv.WINDOW_GUI_NORMAL 不显示工具栏和状态栏(旧方法)
cv.WINDOW_GUI_EXPANDED 增强版的GUI(新方法)

默认 flags 为:

WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED

表示根据图像来自动等比例的调整窗口大小,并用新的增强版GUI展示。

销毁窗口

可以用 cv.destroyAllWindows() 函数销毁我们创建的所有窗口。

如果你想销毁指定的窗口,可以用 cv.destroyWindow(winName) 函数,参数为窗口名称,可以通过窗口名称来指定要销毁的窗口。