我有一系列高分辨率图像,我想使用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()
它会生成视频,但是质量会大大降低。有什么办法解决吗?
答案 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”通道的质量,对于常规图像也应该没问题。