python有什么比较好的图像颜色相似度对比的库么

Python020

python有什么比较好的图像颜色相似度对比的库么,第1张

需要使用Python Imaging Library,下代是python2.x的代码:

from itertools import izip

import Image

i1 = Image.open("image1.jpg")

i2 = Image.open("image2.jpg")

assert i1.mode == i2.mode, "Different kinds of images."

assert i1.size == i2.size, "Different sizes."

pairs = izip(i1.getdata(), i2.getdata())

if len(i1.getbands()) == 1:

# for gray-scale jpegs

dif = sum(abs(p1-p2) for p1,p2 in pairs)

else:

dif = sum(abs(c1-c2) for p1,p2 in pairs for c1,c2 in zip(p1,p2))

ncomponents = i1.size[0] * i1.size[1] * 3

print "Difference (percentage):", (dif / 255.0 * 100) / ncomponents

对比度 = (L1 + 0.05)/(L2 + 0.05)「其中:L指颜色的相对亮度」

相对亮度L = 0.2126 * R + 0.7152 * G + 0.0722 * B

其中 R, G , B 取值为:若 XsRGB <= 0.03928 则 X = XsRGB/12.92 ;否则 X = ((XsRGB+0.055)/1.055) ^ 2.4

XsRGB 在此指代 RsRGB, GsRGB, 或 BsRGB,取值为 XsRGB = X8bit/255 「X8bit 指R、G、B通道各自在8位/通道下 0-255 的取值」。

黑色#000000白色#ffffff对比度为21

就是给出以下几个function的def 越多越好:

1、 red_average(Picture) 算出pic众pixels的平均红值 。

2、scale_red(Picture, int) 调整图片红值 并确保其不超过255 。

3、expand_width(Picture, int)  。

4、reduce_width(Picture, int) 放大和缩小宽值 都是乘或者除的 ,distance(Pixel, Pixel) 以红蓝绿值为标准 计算两个pixel之间的距离(类似于xyz坐标轴中两点距离)。

5、simple_difference(Picture,Picture) 简单计算两张图片有多相似 不必考虑长宽。

6、smart_difference(Picture,Picture) 这个方程的步骤需为: 判断图片大小 。如必要 乘除高度 。 如必要 乘除宽度。 调整图片颜色使之相同平均红蓝绿值 。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。