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