```python from PIL import Image if __name__ == "__main__": im = Image.open("mr.zhang.jpg") x, y = im.size for i in range(x): for j in range(y): r, g, b = im.getpixel((i,j)) if (0 <= r < 50) and (90 <= g <= 155) and (130 <= b<= 230): r, g, b = 255, 255, 255 im.putpixel((i, j), (r, g, b)) im.show() ```
gulangyu
2017-07-15 16:54:43 +08:00
@NoAnyLove 谢谢回复!想问下你是用什么方法来确定 r, g, b 三者的范围的?如果把 0 <= r 这里的等号去掉,为什么图像就花了,这个等号似乎很重要。
NoAnyLove
2017-07-16 03:51:25 +08:00
@gulangyu 把图片打开,随便找个取色器,大概的在背景上扫一下,记录下 RGB 大概的区间。如果处理之后还有蓝色没有被去掉,再根据处理后的图片中没有去掉的部分,继续调整颜色区间。说实话,这个方法其实比较蠢,但是优点是简单容易理解;用 OpenCV 来做效果更好,但是更复杂, 需要有一些基础知识。取等号是因为蓝色背景中有些像素点的 R 就是 0。