如何更改图像的像素值?

新手上路,请多包涵

我正在从事一个图像处理项目,我是 Python 和使用 PIL 的初学者。任何帮助,将不胜感激。

所以,我正在做的是,我有一张有星星和噪音的太空图像。我想要做的是只保留较亮的像素并过滤掉暗淡的像素。现在,这是我尝试消除噪音的基本步骤。在研究图像数据后,我发现 205 的值很可能是我想要将阈值保持在的值。

所以我在代码中所做的是,打开图像并将包含 205 的像素值更改为黑色。这是相同的代码:

 from PIL import Image
im = Image.open('nuvfits1.png')
pixelMap = im.load()

img = Image.new( im.mode, im.size)
pixelsNew = im.load()
for i in range(img.size[0]):
    for j in range(img.size[1]):
        if 205 in pixelMap[i,j]:
           pixelMap[i,j] = (0,0,0,255)
        pixelsNew[i,j] = pixelMap[i,j]
im.close()
img.show()
img.save("out.tif")
img.close()

问题是,生成的图像只是一个普通的白色屏幕。我做错了什么?

原文由 Manshi Sanghai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 495
1 个回答

if 块后面应该跟一个 else 块,以便不符合您的标准的“正常”像素保留其原始值。

 from PIL import Image
im = Image.open('leaf.jpg')
pixelMap = im.load()

img = Image.new( im.mode, im.size)
pixelsNew = img.load()
for i in range(img.size[0]):
    for j in range(img.size[1]):
        if 205 in pixelMap[i,j]:
            pixelMap[i,j] = (0,0,0,255)
        else:
            pixelsNew[i,j] = pixelMap[i,j]
img.show()

上面的代码给了我以下结果:

输入图像

输入

输出图像

输出

原文由 essbee 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题