У меня есть серия изображений с высоким разрешением, которые я хочу преобразовать в файл MP4 в Python (3.6) с помощью ImageIO. Есть ли способ сделать это без сжатия и потери качества?
В настоящее время я использую код:
fileList = []
path = "./Images/MP4/relu-3layers-32units-M1/"
name = "img"
for file in os.listdir(path):
if file.startswith(name):
complete_path = path + file
fileList.append(complete_path)
writer = imageio.get_writer('test.mp4', fps = 30)
for im in fileList:
writer.append_data(imageio.imread(im))
writer.close()
Он генерирует видео, но качество существенно снижается. Как это исправить?





Для достижения наилучшего результата выберите подходящий кодек, например libx264 или mjpeg, определенно выберите максимальное качество видео и, возможно, формат пикселей, например yuvj444p:
writer = imageio.get_writer('test.mp4', fps = 30,
codec='mjpeg', quality=10, pixelformat='yuvj444p')
Кодек mjpeg подходит для изображений jpg. Выбор libx264 для изображения по умолчанию также должен отлично работать (и, вероятно, делать видео меньшего размера), но я понимаю, что он может отсутствовать в системе.
Качество 10 - это максимально возможное качество для любого кодека. Диапазон 0-10.
Наконец, формат пикселей yuvj444p (или yuv444p) записывает все три канала с полным разрешением. Другие параметры, такие как yuvj420p и yuvj422p, снижают качество в каналах «u» и / или «v», и это также должно быть приемлемым для обычных изображений.
Это помогло! Спасибо!