Потеря качества в ImageIO - PullRequest
       33

Потеря качества в ImageIO

0 голосов
/ 23 октября 2018

У меня есть серия изображений с высоким разрешением, которые я хочу преобразовать в файл 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()

Он генерирует видео, но качество существенно снижается.Есть ли способ это исправить?

1 Ответ

0 голосов
/ 12 ноября 2018

Для достижения наилучшего результата выберите правильный кодек, например, «libx264» или «mjpeg», определенно выберите максимальное качество видео и, возможно, формат пикселей, например, «yuvj444p»:

writer = imageio.get_writer('test.mp4', fps = 30,
    codec='mjpeg', quality=10, pixelformat='yuvj444p')

Кодек mjpeg подходит для изображений JPG.Выбор imageio по умолчанию libx264 также должен отлично работать (и, возможно, создавать видео меньшего размера), но я понимаю, что он может отсутствовать в системе.

Качество 10 - это максимально возможное качество для любого кодека.Диапазон составляет 0-10.

Наконец, формат пикселей yuvj444p (или yuv444p) записывает все три канала с полным разрешением.Другие параметры, такие как yuvj420p и yuvj422p, снижают качество каналов "u" и / или "v", и это также должно быть приемлемо для обычных изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...