簡體   English   中英

如何更快地從視頻中提取幀?

[英]How to extract frames from video faster?

目前,我正在根據以下代碼檢索視頻幀:

# 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()

此代碼需要花費大量時間從視頻中提取幀。 有沒有更快的方法來實現此代碼?

占用時間最多的代碼行是:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM