Как прочитать видеофайл и сохранить кадр (изображение) с помощью встроенной библиотеки python?

#python #python-3.x #image

#python #python-3.x #изображение

Вопрос:

Я хочу прочитать видеофайл, извлечь случайный кадр и сохранить как файл изображения. Для этого я попробовал приведенный ниже код.

 vidcap = cv2.VideoCapture(video_path)
success, image = vidcap.read()
snapshot_path = f"{snapshot_name}.jpg"
cv2.imwrite(snapshot_path, image)  # save frame as JPEG file
  

Приведенный выше код работает правильно, но я использовал opencv-python. Я должен использовать свое приложение в docker. Итак, я хочу уменьшить размер docker. Во всем моем приложении я использовал cv2 только для вышеупомянутой функции. Если какая-либо встроенная библиотека python или облегченная библиотека python будет заменена для вышеуказанной функциональности, это было бы большим улучшением для уменьшения размера docker.

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

Ответ №1:

Если это не необработанное видео, вам все равно понадобится видеокодек для декодирования видео. Вы можете попробовать комбинацию пакетов imageio и imageio-ffmpeg. Или вы можете попробовать python-оболочку для ffmpeg, ffmpeg-python.

https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#convert-video-to-numpy-array

https://imageio.readthedocs.io/en/stable/examples.html