【问题标题】:How to extract frames from video faster?如何更快地从视频中提取帧?
【发布时间】:2019-04-26 00:41:39
【问题描述】:

目前,我正在根据以下代码检索视频帧:

# Retrieve Images from Videos
for video in list_videos:
    vidcap = cv2.VideoCapture(video)
    success, image = vidcap.read()
    count = 0
    print("Successfully retrieving videos from ", video)
    while success:
        cv2.imwrite('.'+video.split('.')[-2]+'/'+'frame%d.png' %count, image)
        success, image = vidcap.read()
        count += 1
    vidcap.release()

此代码需要花费大量时间从视频中提取帧。有没有更快的方法来实现这段代码?

【问题讨论】:

    标签: python-3.x opencv video


    【解决方案1】:

    花费时间最多的代码行是:

    cv2.imwrite('.'+video.split('.')[-2]+'/'+'frame%d.png' %count, image)
    

    使该行更快的一种方法是在将图像写入硬盘驱动器之前调整图像大小(使其更小):

    cv2.resize(image, (640,480))
    

    另一种更快处理视频的方法是将图像写入内存而不是硬盘驱动器。仅当您有足够的 RAM 来保存图像时,此方法才有效。它可能导致灾难性的计算机崩溃:

    images = []
    while success:
        images.append(image)
        success, image = video.read()
    

    【讨论】:

    • 感谢您的意见。我会尝试第一个选项。这是一个巨大的数据,所以我离开了第二个选项。有没有办法 cv2.imwrite() 步骤
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多