python计算色差
参考:https://blog.csdn.net/lz0499/article/details/77345166
def rgb2xyz(x,y,z):x = x/255.0y = y/255.0z = z/255.0xnew = 0.4124564*x + 0.3575761*y + 0.1804375*zynew = 0.2126729*x + 0.7151522*y + 0.0721750*zznew = 0.0193339*x + 0.1191920*y + 0.9503041*zreturn xnew, ynew, znewdef xyz2Lab(x,y,z):x = x/0.950456y = y/1.0z = z/1.088754if x>0.008856:xx = x**(1.0/3)else:xx = 7.787*x + 4.0/29if y>0.008856:yy = y**(1.0/3)else:yy = 7.787*y + 4.0/29if z>0.008856:zz = z**(1.0/3)else:zz = 7.787*z + 4.0/29L = 116.0*yy-16.0if L<0:L=0a = 500.0*(xx-yy)b = 200.0*(yy-zz)return L,a,bdef calcDeltaE(r1,g1,b1,r2,g2,b2):x1, y1, z1 = rgb2xyz(r1,g1,b1)x2, y2, z2 = rgb2xyz(r2,g2,b2)L1, A1, B1 = xyz2Lab(x1, y1, z1)L2, A2, B2 = xyz2Lab(x2, y2, z2)print(r1,g1,b1)print(r2,g2,b2)# print(L1,A1,B1)# print(L2,A2,B2)deltaE = ((L1-L2)**2 + (A1-A2)**2 + (B1-B2)**2)**0.5print(deltaE)calcDeltaE(140,173,186, 141,173,187)