用python实现对比两张图片的不同


Posted in Python onFebruary 05, 2018
from PIL import Image
from 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)
  try: 
    diff = ImageChops.difference(image_one, image_two)
    if diff.getbbox() is None:
    # 图片间没有任何不同则直接退出
      print("【+】We are the same!")
    else:
      diff.save(diff_save_location)
  except ValueError as e:
    text = ("表示图片大小和box对应的宽度不一致,参考API说明:Pastes another image into this image."
        "The box argument is either a 2-tuple giving the upper left corner, a 4-tuple defining the left, upper, "
        "right, and lower pixel coordinate, or None (same as (0, 0)). If a 4-tuple is given, the size of the pasted "
        "image must match the size of the region.使用2纬的box避免上述问题")
    print("【{0}】{1}".format(e,text))
if __name__ == '__main__':
  compare_images('1.png',
          '2.png',
          '我们不一样.png')

执行结果:

用python实现对比两张图片的不同

用python实现对比两张图片的不同

用python实现对比两张图片的不同

用python实现对比两张图片的不同

第二种方法:

from PIL import Image
import math
import operator
from functools import reduce
def image_contrast(img1, img2):
  image1 = Image.open(img1)
  image2 = Image.open(img2)
  h1 = image1.histogram()
  h2 = image2.histogram()
  result = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2, h1, h2)))/len(h1) )
  return result
if __name__ == '__main__':
  img1 = "./1.png" # 指定图片路径
  img2 = "./2.png"
  result = image_contrast(img1,img2)
  print(result)

如果两张图片完全相等,则返回结果为浮点类型“0.0”,如果不相同则返回结果值越大。

同样用上面两张图片,执行结果为38,还是比较小的:

用python实现对比两张图片的不同

这样就可以在自动化测试用例中调用该方法来断言执行结果。

关于Pillow库的详细文档:

http://pillow.readthedocs.org/en/latest/index.html

总结

以上所述是小编给大家介绍的用python实现对比两张图片的不同,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
浅要分析Python程序与C程序的结合使用
Apr 07 Python
Python下的twisted框架入门指引
Apr 15 Python
python方向键控制上下左右代码
Jan 20 Python
Python KMeans聚类问题分析
Feb 23 Python
分析经典Python开发工程师面试题
Apr 08 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
May 21 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
python中有函数重载吗
May 28 Python
Python基础教程之输入输出和运算符
Jul 26 Python
Python执行时间的几种计算方法
Jul 31 Python
python中的django是做什么的
Jul 31 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 #Python
Python安装模块的常见问题及解决方法
Feb 05 #Python
Python实现的用户登录系统功能示例
Feb 05 #Python
python中numpy的矩阵、多维数组的用法
Feb 05 #Python
NumPy 如何生成多维数组的方法
Feb 05 #Python
python生成器,可迭代对象,迭代器区别和联系
Feb 04 #Python
python实现mysql的读写分离及负载均衡
Feb 04 #Python
You might like
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
第七节 类的静态成员 [7]
2006/10/09 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
简明json介绍
2008/09/28 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
Python之PyUnit单元测试实例
2014/10/11 Python
想学python 这5本书籍你必看!
2018/12/11 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
利用python下载scihub成文献为PDF操作
2020/07/09 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
企业面试题试卷附带答案
2015/12/20 面试题
开工典礼策划方案
2014/05/23 职场文书
中国梦口号
2014/06/13 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
放射科岗位职责
2015/02/14 职场文书
python如何查找列表中元素的位置
2022/05/30 Python