获取颜色坐标不起作用的函数



它现在可以工作了,结果是:"无">

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));
}

阅读此内容。

最新更新