繁体   English   中英

如何使用枕头创建和保存灰度图像的 gif?

[英]How do I create and save gif of gray scale images with pillow?

运行它时出现属性错误。 此代码适用于另一个 RGB 数据集。 Python3.6、windows10

代码:

    image_dirs = glob.glob(denoised_dir + "/*")
    for_gif = []
    counter = 0 
    for (count, each_dir)in enumerate(image_dirs):
        images = glob.glob(each_dir + "/*")
        print(images)
        for image in images:
            counter += 1
            print(counter)
            print("processing denoised image:", image)
            im = Image.open(image)
            print("confirmimation", type(im))
            for_gif.append(im)
            print("counter", counter)
            print("for_gif", len(for_gif))
        print(for_gif)
        os.makedirs("./outputs/noise/gif/"+str(args.imgsize) + "_" + str(args.epochs) + "/" + args.image_type, exist_ok = True)
        print("directory created")
        for_gif[0].save("./outputs/noise/gif/"+str(args.imgsize) + "_" + str(args.epochs) + "/" + args.image_type + "/" + str(count) + ".gif", 
                        save_all=True, 
                        append_images=for_gif[1:],
                        optimize=False, 
                        duration=500, 
                        loop=0
                        )

for_gif如下:

[<PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A07CF28>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0EC7F0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0F08D0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0F0BE0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC080>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120
at 0x1FE2A0FC0F0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC160>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC1D0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC240>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC2B0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC320>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC390>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC400>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC470>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC4E0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC550>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC5C0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC630>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC6A0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC710>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC780>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC7F0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC860>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC8D0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC940>]

错误:

AttributeError: 'NoneType' object has no attribute 'palette'

任何建议都会对我有所帮助。 谢谢。

虽然Image.open(image).convert('P')有效,但在第一次转换为灰度时我得到了更好的结果: Image.open(image).convert('L').convert('P')

在没有明确转换为灰度的情况下,GIF 会产生一些彩色噪声。

我认为发生错误是因为您将'L'分配给了image mode

就我而言,它在调色板模式下运行良好: 'P'

import numpy as np
from PIL import Image 

images=[]
for frame_id in range(frame_num):
    # check image mode of target data
    im_pil = Image.open("frame_id"+ ".png").convert('P') 
    images.append(im_pil)

images[0].save('out.gif', save_all=True, append_images=images[1:])

请注意,GIF 文件始终被读取为灰度 ('L') 或调色板模式 ('P') 图像。

参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM