6

我有一系列高分辨率图像,我想使用 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()

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

4

1 回答 1

4

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

于 2018-11-12T17:46:57.370 回答