【问题标题】:How to extract an image per minute from video with a predefined starting frame in cv2 VideoCapture如何在 cv2 VideoCapture 中使用预定义的起始帧从视频中提取每分钟的图像
【发布时间】:2021-09-16 07:33:25
【问题描述】:

我想从 mp4 视频录制中每分钟提取一张图像,并且我已经有一个代码,但是,我还想添加一个起始帧,从哪里开始提取并设置一个结束帧或应提取的图像数量。 这是因为我想避免修剪视频,因为这需要很长时间。

我现有的提取图像的代码如下:

cap = cv2.VideoCapture(r'C:my_folder/my_video.mp4') 
i = 1
while (cap.isOpened()):
ret, frame = cap.read()

if ret == False:
    break
if i % 1800 == 0: 
    cv2.imwrite(r'C:/my_folder/pictures/' + str(i) + '.jpg', frame) 
                                                                                                    
i += 1
cap.release()
cv2.destroyAllWindows()

假设我想从第 2700 帧开始提取,然后每隔 1800 帧开始提取,直到我有 30 帧。

有没有办法做到这一点?非常感谢您的每一次帮助!

【问题讨论】:

    标签: image extract frame opencv-python


    【解决方案1】:

    if 条件更改为以下内容:

    if i > 2700 and i % 1800 == 0:
    

    【讨论】:

    • 您好,欢迎对此答案进行一些解释。
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 我对@user3805577 的代码所做的是按照建议将其插入到我的主代码中,并且我还在 `cv2.imwrite` 行之后添加了` if i > 18000: break` 以停止在第 18000 帧提取。这样,在第 2700 帧之后,对应于 1800 循环的第一帧(从第 0 帧开始计数)将首先被提取,在这种情况下为第 3600 帧。最后一个将是第 18000 个。
    猜你喜欢
    • 2020-09-20
    • 2019-12-03
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多