使用Python 制作对比图片相似度的程序怎么比较?

Python020

使用Python 制作对比图片相似度的程序怎么比较?,第1张

就是给出以下几个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可以调用的扩展类库。

比较不同

使用PIL(Pillow library)库

安装 pip install pillow,然后直接用其中的ImageChops函数

from PIL import Imagefrom PIL import ImageChops

def compare_images(path_one, path_two, diff_save_location):

   """

   比较图片,如果有不同则生成展示不同的图片

   @参数一: path_one: 第一张图片的路径

   @参数二: path_two: 第二张图片的路径

   @参数三: diff_save_location: 不同图的保存路径

   """

   image_one = Image.open(path_one)

   image_two = Image.open(path_two)

   diff = ImageChops.difference(image_one, image_two)

   if diff.getbbox() is None:        # 图片间没有任何不同则直接退出

       return

   else:

       diff.save(diff_save_location)

if __name__ == '__main__':

   compare_images('/path/to/瀑布.jpg',                   '/path/to/瀑布改.jpg',                   '/path/to/不同.jpg')

结果,底部的不同被显示出来了