ImageIO的质量损失

时间:2018-10-23 12:08:32

标签: python-3.x video 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()

它会生成视频,但是质量会大大降低。有什么办法解决吗?

1 个答案:

答案 0 :(得分:2)

为获得最佳效果,请选择适当的编解码器(例如“ 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”通道的质量,对于常规图像也应该没问题。