Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改图像的像素值?_Python_Image Processing_Error Handling_Python Imaging Library_Pixel - Fatal编程技术网

Python 如何更改图像的像素值?

Python 如何更改图像的像素值?,python,image-processing,error-handling,python-imaging-library,pixel,Python,Image Processing,Error Handling,Python Imaging Library,Pixel,我正在从事一个图像处理项目,我是Python和使用PIL的初学者。任何帮助都将不胜感激 所以,我现在做的是,我有一个有星星和噪音的空间图像。我想做的是只保留较亮的像素,过滤掉较暗的像素。现在,这是我消除噪音的基本步骤。 在研究了图像数据之后,我发现205的值很可能就是我想要保持阈值的值 因此,我在代码中所做的是,打开图像并将包含205的像素值更改为黑色。 以下是相同的代码: from PIL import Image im = Image.open('nuvfits1.png') pixelMa

我正在从事一个图像处理项目,我是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()

问题是,生成的图像只是一个普通的白色屏幕。我做错了什么?你犯了一个愚蠢的错误。在第6行你已经写了
pixelsNew=im.load
() 而不是
pixelsNew=img.load()
现在应该可以了

from PIL import Image
im = Image.open('nuvfits1.png')
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)
        pixelsNew[i,j] = pixelMap[i,j]
im.close()
img.show()       
img.save("out.tif") 
img.close()

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()
上面的代码给出了以下结果:

输入图像

输出图像


基本上,您需要一张去除了噪声的新图像,即像素新图像。 因此,每当您在pixelMap
中发现这样的情况时,如果在pixelMap[i,j]
中有205,则在pixelsNew
pixelNew[i,j]=(0,0,0,255)
中设置相应的值为0。否则,只需从pixelMap
pixelsNew[i,j]=pixelMap[i,j]

from PIL import Image
im = Image.open('nuvfits1.png')
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]:
            pixelsNew[i,j] = (0,0,0,255)
        else:
            pixelsNew[i,j] = pixelMap[i,j]
im.close()
img.show()       
img.save("out.tif") 
img.close()

谢谢你的建议。我这么做了,但是现在我又得到了同样的图像,不是一个编辑过的图像。你应该简单地解释一下你的代码。完成!请现在检查。