它现在可以工作了,结果是:"无">
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)
你对蓝色的定义太精确了。我的意思是,[71, 238, 255](70 --> 71(在我们的眼睛看来是一样的,但计算机会注意到差异。
有一个名为pynche 的程序,它可以将RGB更改为Python的英文颜色名称。https://github.com/python/cpython/blob/master/Tools/pynche/ColorDB.py
顺便说一句,也许您应该考虑使用列表,而不是仅返回与您的颜色匹配的第一个坐标。
与其直接比较颜色,不如尝试计算两者之间的距离。
下面的代码是在这里收集的。
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));
}
阅读此内容。