Man*_*hai 7 python error-handling pixel image-processing python-imaging-library
我正在开发一个图像处理项目,我是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()
Run Code Online (Sandbox Code Playgroud)
问题是,得到的图像只是一个纯白色的屏幕.我做错了什么?
小智 8
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()
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我以下结果:
输入图像
输出图像
你犯了一个愚蠢的错误。在第 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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30437 次 |
| 最近记录: |