【问题标题】:Pausing and restarting a video in Python在 Python 中暂停和重新启动视频
【发布时间】:2020-04-09 08:59:31
【问题描述】:

我有几个视频,我想逐帧浏览它们,并通过按键盘键(取决于帧)对其中一些进行注释。对于许多帧,我不会按任何键。这是我目前所拥有的:

import numpy as np
import cv2

cap = cv2.VideoCapture('video.mp4')

frame_number = []
annotation_list = []

i = 0
while(True):        
    # Read one frame.
    ret, frame = cap.read()

    # Show one frame.
    cv2.imshow('frame', frame)

    # Set the time between frames in miliseconds
    c = cv2.waitKey(500)
    i = i + 1

    try:
        annotation_list = annotation_list + [chr(c)]
        frame_number = frame_number + [i]
    except:
        continue

因此,这将显示每帧 0.5 秒,并与我按下按钮的每一帧相关联,即给定的字母。我现在需要一个选项,对于给定的帧,我可以在该帧停止视频只要我需要,例如按“空格”,以便考虑如何注释它,然后按“空格” ” 再次继续视频,一旦我决定如何注释。如何添加此暂停/继续选项?谢谢!

【问题讨论】:

    标签: python opencv image-processing video video-capture


    【解决方案1】:

    您可以通过根据cv2.waitKey() 的返回值确定按下的键来实现暂停/恢复功能。要暂停视频,您可以不向 cv2.waitKey() 传递任何参数(或 0),它将无限期地等待,直到有按键按下,然后它将恢复视频。来自docs

    cv2.waitKey()是一个键盘绑定函数。它的参数是以毫秒为单位的时间。该函数等待任何键盘事件的指定毫秒。如果您在那段时间内按任意键,程序将继续。如果传递 0,它会无限期地等待击键。它还可以设置为检测特定的击键,例如是否按下了键 a 等,我们将在下面讨论。

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

    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
    

    以后如果你想在按键后执行一些动作,你可以用这个脚本来确定“键码”:

    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)
    

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2013-07-06
      • 2022-01-04
      • 1970-01-01
      • 2021-06-15
      相关资源
      最近更新 更多