在 OpenCV 的 Python 接口中,cv.imshow()
函数用于创建一个窗口并显示图像。默认情况下,如果没有其他代码来控制程序的流程,imshow()
会立即执行并返回,这意味着程序会继续执行到下一个语句,如果没有其他代码,程序将执行完毕并退出。在 Python 中,当脚本执行完毕时,它会关闭所有由该脚本创建的窗口。
cv.waitKey(0)
函数的作用是等待用户按下键盘上的任意键,其参数 0
表示无限期等待。如果没有调用 cv.waitKey()
或类似的等待函数,程序会在显示图像后立即结束,导致窗口关闭。
这就是为什么如果没有 cv.waitKey(0)
或其他等待函数,OpenCV 创建的窗口会“一闪而过”并立即关闭。为了避免这种情况,通常会在 cv.imshow()
之后调用 cv.waitKey()
来暂停程序,等待用户交互。
以下是一个简单的示例,展示了如何使用 cv.waitKey(0)
来防止窗口立即关闭:
import cv2 as cv
# 读取图像
img = cv.imread('star.png', 0)
# 显示图像
cv.imshow('pic', img)
# 等待用户按下任意键
cv.waitKey(0)
# 摧毁所有 OpenCV 创建的窗口
cv.destroyAllWindows()
在这个示例中,cv.waitKey(0)
使得程序在用户按下任意键之前暂停。这样,窗口会保持打开状态,直到用户进行交互。当用户按下任意键后,cv.waitKey(0)
返回,程序继续执行,调用 cv.destroyAllWindows()
关闭窗口。如果你想要在程序结束时自动关闭窗口,而不是等待用户输入,你可以省略 cv.waitKey(0)
,但在实际的图像处理程序中,通常需要这个等待步骤来观察处理后的图像。