如何使用python opencv设置捕获视频的时间?

时间:2018-05-20 11:20:34

标签: python opencv

我有一个代码从github https://gist.github.com/keithweaver/4b16d3f05456171c1af1f1300ebd0f12#file-save-video-w-opencv-py中捕获来自摄像头的视频。

但是如何设置此捕获的时间限制?。我希望连续捕获多个视频,持续时间为3分钟而不会丢帧。

我有点新的编程可以任何人帮助代码。非常感谢

3 个答案:

答案 0 :(得分:4)

你可以这样做:

  1. startTime = time.time()
  2. timeElapsed = startTime - time.time()
  3. secElapsed = int(timeElapsed)
  4. while(secElapsed < 100)
  5. 时停止该程序

    代码示例,它应该如下所示:

    import numpy as np
    import cv2
    import time
    
    # The duration in seconds of the video captured
    capture_duration = 10
    
    cap = cv2.VideoCapture(0)
    
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
    
    start_time = time.time()
    while( int(time.time() - start_time) < capture_duration ):
        ret, frame = cap.read()
        if ret==True:
            frame = cv2.flip(frame,0)
            out.write(frame)
             cv2.imshow('frame',frame)
        else:
            break
    
    cap.release()
    out.release()
    cv2.destroyAllWindows()
    

答案 1 :(得分:1)

您也可以使用moviepy。 以秒为单位设置startend个持续时间。比如说,你想从第二分钟开始捕捉子剪辑(例如,开始= 120),你想要录制5分钟。 (5分钟=300秒)。以下是如何做到这一点:

from moviepy import VideoFileClip

clip = VideoFileClip("/path/to/video.mp4")
starting_point = 120  # start at second minute
end_point = 420  # record for 300 seconds (120+300)
subclip = clip.subclip(starting_point, end_point)
subclip.write_videofile("/path/to/new/video.mp4")

答案 2 :(得分:0)

根据@Ali Yilmaz所说,这可能有点过时了。它可以在带有内核4.19.x和python3的Debian Buster的32位ARM处理器上工作。

from moviepy.editor import VideoFileClip

clip = VideoFileClip("/path/to/yourfile.mp4")

start = 10 # start at 10 seconds
end   = 25 # plays for 15 seconds and ends at 25 seconds

subclip = clip.subclip(start, end)
subclip.write_videofile("/path/to/yournewfile.mp4")

我认为我的moviepy设置和Ali的设置唯一的区别是,两年后,随着moviepy发行版和安装方式的变化,情况发生了变化。