OpenCV cv2.waitKey()的教程及实例

1,613 阅读2分钟

简介

在这篇文章中,我们将看到一个关于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