简介
在这篇文章中,我们将看到一个关于OpenCV cv2.waitKey()函数的快速教程。我们将首先了解这个函数的作用和它的语法,然后了解它在OpenCV中显示图像和视频时的作用。为了更好地理解,所有这些内容都将在实例的帮助下进行阐述。
什么是OpenCV中的cv2 waitkey()函数?
cv2 waikey()在进入下一组操作之前,会等待按下的按键事件。它的语法如下
语法
cv2.waitKey(delay)
对于'delay'的任何正值,它等待'delay'的毫秒。而对于'delay'的任何负值或当'delay'=0时,该函数会无限期地等待一个按键事件。
cv2.waitKey()的简单例子
在这个微不足道的小例子中,数字1,2,3以5000毫秒或5秒的间隔被打印出来,因为5000被作为参数传递给cv2 waitKey()函数。
In[0]:
import cv2
print("1");
cv2.waitKey(5000)
print("2");
cv2.waitKey(5000)
print("3");
输出[0]:
1
2
3
在cv2.waitKey()的帮助下显示图像的例子
例子1
在这个例子中,用imread()函数读取图像,然后用imshow()函数显示图像。在这之后,由于cv2.waitKey()函数的作用,执行等待了10000毫秒或10秒。最后,在10秒后,用destroyAllWindows()函数关闭图像窗口。
在[1]中:
import cv2
img=cv2.imread("dog.jpg")
cv2.imshow('Image',img)
cv2.waitKey(10000)
cv2.destroyAllWindows()
例2
在这个例子中,0被传递给了cv2 waitKey()函数,这意味着执行将无限地等待,直到有一个键被按下,之后图像窗口被关闭。
通常,为了所有的实际目的,人们使用cv2 waitKey(0)来关闭图像显示,而不是像我们在第一个例子中看到的那样给出任何其他的毫秒值。
在[2]中:
import cv2
img=cv2.imread("dog.jpg")
cv2.imshow('Image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在cv2 waitKey()的帮助下显示视频的例子
下面的例子显示了如何使用cv2.waitKey()来显示来自网络摄像头的视频资料。在这里,一旦按下x键,视频源将被关闭。
在[3]中:
vid = cv2.VideoCapture(0)
while(True):
ret, frame = vid.read()
cv2.imshow('frame', frame)
# when 'x' key is pressed the video capture stops
if cv2.waitKey(1) & 0xFF == ord('x'):
break
vid.release()
cv2.destroyAllWindows()
你可以注意到我们在这里使用了cv2.waitKey(1),你可能想知道为什么1毫秒被作为参数传递给cv2 waitkey()函数。这是因为cv2.waitKey(1)将确保视频帧的显示时间至少为1毫秒。
如果你使用cv2.waitKey(0),那么将打开一帧视频,它将等待你按下一个键,然后打开下一帧,如此循环。它不会向你显示连续的画面。
因此,cv2.waitKey(0)是显示图像的理想选择,cv2.waitKey(1)是显示视频的理想选择。
参考资料 -Stackoverflow
OpenCV cv2.waitKey()的技巧和窍门教程及实例》一文出现在MLK - Machine Learning Knowledge上