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" 通道中的质量,对于常规图像也应该没问题。
我有一系列高分辨率图像,我想使用 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" 通道中的质量,对于常规图像也应该没问题。