python - PIL替换颜色的最佳方法?

标签 python image replace colors python-imaging-library

我正在尝试从图像中删除某种颜色,但是效果不如我希望的那样。我尝试做与此处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/

相关文章:

JavaScript 页内搜索和替换

python - 如何在每个数据框列旁边插入新列

python - 使用 python 3 执行脚本的批处理脚本(如果可用),否则 python 2

javascript - 如何在浏览器中使图像 100% 正确?

android - 使用从 URL 下载的图像在主屏幕上创建快捷方式

sql-server - 如何在SQL中提取方括号之间的文本

python - 如何找到 EC key python-cryptography 的 ASN.1 组件

python - 用列拆分 Pandas 数据框

html - 有一张不会在某些分辨率下显示的图像

python替换数据框 Pandas 中所有列的多个值