我正在尝试从图像中删除某种颜色,但是效果不如我希望的那样。我尝试做与此处Using PIL to make all white pixels transparent?相同的操作,但是图像质量有些损失,因此在删除的位置周围留下了一些奇怪的彩色像素鬼影。如果所有三个值均小于100,我尝试执行类似更改像素的操作,但是由于图像质量较差,周围的像素甚至没有变黑。
有谁知道用Python中的PIL替换颜色和周围颜色的更好方法吗?这可能是我可以想到的唯一可以完全删除对象的可靠方法,但是我想不出一种方法。
图片具有白色背景,文本为黑色。假设我要从图像中完全删除文本,而不会留下任何伪像。
真的很感谢某人的帮助!谢谢
最佳答案
您需要将图像表示为二维数组。这意味着要么制作一个像素列表列表,要么使用一些聪明的数学方法将一维数组视为二维数组。然后,对于定位的每个像素,您需要找到所有周围的像素。您可以使用python生成器执行以下操作:
def targets(x,y):
yield (x,y) # Center
yield (x+1,y) # Left
yield (x-1,y) # Right
yield (x,y+1) # Above
yield (x,y-1) # Below
yield (x+1,y+1) # Above and to the right
yield (x+1,y-1) # Below and to the right
yield (x-1,y+1) # Above and to the left
yield (x-1,y-1) # Below and to the left
因此,您可以这样使用它:
for x in range(width):
for y in range(height):
px = pixels[x][y]
if px[0] == 255 and px[1] == 255 and px[2] == 255:
for i,j in targets(x,y):
newpixels[i][j] = replacementColor
关于python - PIL替换颜色的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1616767/