You can implement a pause/resume feature by determining what key was pressed from the return value of cv2.waitKey()
. To pause the video, you can pass no parameter (or 0) to cv2.waitKey()
which will wait indefinitely until there is a key press then it will resume the video. From the docs:
cv2.waitKey()
is a keyboard binding function. Its argument is the time in milliseconds. The function waits for specified milliseconds for any keyboard event. If you press any key in that time, the program continues. If 0 is passed, it waits indefinitely for a key stroke. It can also be set to detect specific key strokes like, if key a is pressed etc which we will discuss below.
To determine if the spacebar was pressed, we can check if the returned value is 32
. If this key was pressed then we indefinitely pause the frame until any key is pressed then we resume the video. Here's an example:
import cv2
cap = cv2.VideoCapture('video.mp4')
if not cap.isOpened():
print("Error opening video")
while(cap.isOpened()):
status, frame = cap.read()
if status:
cv2.imshow('frame', frame)
key = cv2.waitKey(500)
if key == 32:
cv2.waitKey()
elif key == ord('q'):
break
In the future if you want to perform some action after pressing a key, you can determine the "key code" with this script:
import cv2
# Load a test image
image = cv2.imread('1.jpg')
while(True):
cv2.imshow('image', image)
key = cv2.waitKey(1)
# 'q' to stop
if key == ord('q'):
break
# Print key
elif key != -1:
print(key)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…