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)
函数,参数为窗口名称,可以通过窗口名称来指定要销毁的窗口。