Как быстрее извлечь кадры из видео? - PullRequest
0 голосов
/ 25 апреля 2019

В настоящее время я получаю видеокадры на основе следующего кода:

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

Этот код занимает много времени для извлечения кадров из видео.Есть ли более быстрый способ реализовать этот код?

1 Ответ

0 голосов
/ 25 апреля 2019

Строка кода, которая занимает больше всего времени:

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

Один из способов сделать эту строку быстрее - изменить размер изображения (сделать его меньше) перед записью на жесткий диск:

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

Еще один способ ускорить обработку видео - записать изображения в память вместо жесткого диска.Этот метод будет работать, только если у вас достаточно оперативной памяти для хранения изображений.Это может привести к катастрофическому сбою компьютера:

images = []
while success:
    images.append(image)
    success, image = video.read()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...