且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

暂停并重新启动Python中的视频

更新时间:2022-05-30 22:23:53

您可以通过从返回值cv2.waitKey()确定按下了哪个键来实现暂停/恢复功能.要暂停视频,您可以不向cv2.waitKey()传递任何参数(或0),该参数将无限期等待直到按下某个键,然后它将恢复视频.从 docs :

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()是键盘绑定功能.它的参数是以毫秒为单位的时间.该函数将为任何键盘事件等待指定的毫秒数.如果在此期间按任意键,程序将继续.如果传递了0,它将无限期地等待击键.还可以将其设置为检测特定的击键,例如是否按下键 a 等,我们将在下面讨论.

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.

要确定是否按下空格键,我们可以检查返回的值是否为32.如果按下此键,则我们将无限期暂停帧,直到按下任意键,然后恢复视频.这是一个示例:

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)