ImageIO 中的质量损失

Quality Loss In 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()

它生成视频,但质量大大降低。有什么办法可以解决这个问题?

为了获得最佳效果,请选择合适的编解码器,例如 '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" and/or "v" 通道中的质量,对于常规图像也应该没问题。