ImageIO 中的质量损失

Zoh*_*air 5 video python-3.x python-imageio

我有一系列高分辨率图像,我想使用 ImageIO 在 Python(3.6) 中将其转换为 MP4 文件。有没有什么办法可以在不压缩或不损失质量的情况下做到这一点?

目前我使用的代码:

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()
Run Code Online (Sandbox Code Playgroud)

它生成视频,但质量大大降低。有任何解决这个问题的方法吗?

eto*_*pov 4

为了获得最佳结果,请选择适当的编解码器,如“libx264”或“mjpeg”,一定要选择最高视频质量,可能还需要选择“yuvj444p”等像素格式:

writer = imageio.get_writer('test.mp4', fps = 30,
    codec='mjpeg', quality=10, pixelformat='yuvj444p')
Run Code Online (Sandbox Code Playgroud)

编解码器mjpeg适用于 jpg 图像。默认的 imageio 选择libx264也应该很好用(并且可能会制作较小的视频),但我知道系统中可能缺少它。

对于任何编解码器来说,质量10都是最高的质量。范围是 0-10。

最后,像素格式yuvj444p(或yuv444p)以全分辨率记录所有三个通道。其他选项(如 yuvj420p 和 yuvj422p)会降低“u”和/或“v”通道的质量,对于常规图像也应该没问题。