遮挡MNIST数据集图片

前言

  博主想修改MNIST图片,进而看一下训练模型的精度是否还会很高,然而在遮挡图片的时候,使用putpixel函数却一直报错,现已解决,记录一下这个问题。

在之前运行过程中,一直提示错误:

 return self.im.putpixel(xy, value)
TypeError: function takes exactly 1 argument (3 given)

翻译一下意思是,给了3个参数但是函数只能提取到一个。

但是由于这个代码之前在flower数据集上已经跑通了,所以博主就很疑惑为什么这里不行,翻看了很多学习资料终于找到了答案。

下图是在flower-daisy下覆盖了一张的图片。

突然间看到了一篇文章说要对图片模式进行转换,才意识到flower数据集是彩色而MNIST数据集是黑白,所以我一直用红色(255,0,0)进行覆盖是不是行不通。

Python图像处理中PIL中image.convert()函数_旅途中的宽~的博客-CSDN博客_image.convert

这篇文章中讲到,MNIST为二值图像,黑为0,白为255.因此,我又把之前的覆盖代码颜色进行了修改。当把红色(255,0,0)改成白色255时,代码瞬间就跑通了!

原来困扰很长时间的问题,竟然是数据集颜色模式问题。

正确代码:

for i in [0,1,2]:
    im1 = Image.open(os.path.join(path, x_names[i]))
    arr = np.array(im1)
    h = arr.shape[0]
    print(h)
    w = arr.shape[1]
    print(w)
    for j in range(0, 20):
        for k in range(0, 20):
            data = im1.getpixel((j, k))  # 得到像素值
            im1.putpixel([j, k],255) 
    count += 1
    print(count)
    im1.save(os.path.join(outdir, '{}.png'.format(count)))

左上角固定位置均被遮挡。

猜你喜欢

转载自blog.csdn.net/qq_43604183/article/details/127320384
今日推荐