它现在正在工作,结果是:“无”
blue = [70, 238, 255]
def FindColor(color):
image = ImageGrab.grab()
for x in range(1, 400):
for y in range(1,400):
px = image.getpixel((x, y))
if px[0] == color[0] and px[1] == color[1] and px[2] == color[2]:
return (x, y)
FindColor(blue)
答案 0 :(得分:0)
您对蓝色的定义过于精确。 我的意思是,[71,238,255](70-> 71)在我们眼中看起来是一样的,但是计算机会注意到它们之间的区别。
有一个名为pynche的程序,可以将RGB更改为英语的Python颜色名称。 https://github.com/python/cpython/blob/master/Tools/pynche/ColorDB.py
顺便说一句,也许您应该考虑使用列表,而不是只返回第一个与您的颜色匹配的协调表。
答案 1 :(得分:0)
与其直接比较颜色,不如计算它们之间的距离。
下面的代码是从here收集的。
typedef struct {
unsigned char r, g, b;
} RGB;
double ColourDistance(RGB e1, RGB e2)
{
long rmean = ( (long)e1.r + (long)e2.r ) / 2;
long r = (long)e1.r - (long)e2.r;
long g = (long)e1.g - (long)e2.g;
long b = (long)e1.b - (long)e2.b;
return sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8));
}
阅读this。