我正在使用Python Imaging Library使用定义颜色关系的查找表为黑白图像着色.查找表只是一个256元素的RGB元组列表:
>>> len(colors)
256
>>> colors[0]
(255, 237, 237)
>>> colors[127]
(50, 196, 33)
>>>
Run Code Online (Sandbox Code Playgroud)
我的第一个版本使用了getpixel()和putpixel()方法:
for x in range(w):
for y in range(h):
pix = img.getpixel((x,y))
img.putpixel((x,y), colors[pix[0]])
Run Code Online (Sandbox Code Playgroud)
这非常缓慢.一份profile报告指出这些putpixel和getpixel方法是罪魁祸首.稍微调查(即阅读文档),我发现" 请注意,这种方法相对较慢. "re : putpixel. (实际运行时间:对于1024x1024图像为53s in putpixel和getpixel50ss)
根据文档中的建议,我使用im.load()并直接使用像素访问:
pixels = img.load()
for x in range(w):
for y in range(h):
pix = pixels[x, y]
pixels[x, y] = colors[pix[0]]
Run Code Online (Sandbox Code Playgroud)
处理加速了一个数量级,但仍然 …
python image-manipulation image image-processing python-imaging-library
我试图从我的图像中删除某种颜色,但它没有像我希望的那样好用.我尝试做同样的事情使用PIL使所有白色像素透明?然而,图像质量有点损失,因此它会在被移除的地方留下一些奇怪的彩色像素.如果所有三个值都低于100,我尝试做像更改像素这样的事情但由于图像质量差,周围的像素甚至都不是黑色.
有没有人知道用Python中的PIL更好的方法来替换它周围的颜色和任何东西?这可能是我能想到的完全移除物体的唯一确定的火力方式,但我想不出办法做到这一点.
图片为白色背景,文字为黑色.我们只想说我想从图像中完全删除文本而不留下任何文物.
非常感谢别人的帮助!谢谢