用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实现基于HTTP文件传输实例
Nov 08 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
python使用folium库绘制地图点击框
Sep 21 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
Opencv实现抠图背景图替换功能
May 21 Python
Django外键(ForeignKey)操作以及related_name的作用详解
Jul 29 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
python如何对链表操作
Oct 10 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
python自动化之如何利用allure生成测试报告
May 02 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
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
django的settings中设置中文支持的实现
2019/04/28 Python
pandas-resample按时间聚合实例
2019/12/27 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
品质保证书格式
2015/02/28 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
小学德育工作总结2015
2015/05/12 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python