我已经做了一个函数来查找图像中的颜色,并返回x,y。现在我需要添加一个新功能,在这里我可以找到具有给定容差的颜色。应该很容易?Python - 查找类似的颜色,最好的方法
代码找到图像色彩,并返回X,Y:
def FindColorIn(r,g,b, xmin, xmax, ymin, ymax):
image = ImageGrab.grab()
for x in range(xmin, xmax):
for y in range(ymin,ymax):
px = image.getpixel((x, y))
if px[0] == r and px[1] == g and px[2] == b:
return x, y
def FindColor(r,g,b):
image = ImageGrab.grab()
size = image.size
pos = FindColorIn(r,g,b, 1, size[0], 1, size[1])
return pos
结果:
从答案比较两种颜色的正常方法在欧氏距离两者,或切比雪夫距离。
我决定主要使用(平方)欧几里德距离和多个不同的颜色空间。 LAB,deltaE(LCH),XYZ,HSL和RGB。在我的代码中,大多数颜色空间使用欧几里德距离来计算差异。例如,LAB,RGB和XYZ是一个简单的平方euc。距离是卓有成效的:
if ((X-X1)^2 + (Y-Y1)^2 + (Z-Z1)^2) <= (Tol^2) then
<