用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中关于字符串对象的一些基础知识
Apr 08 Python
python 多个参数不为空校验方法
Feb 14 Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
使用turtle绘制五角星、分形树
Oct 06 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
python绘制高斯曲线
2021/02/19 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
化工专业大学生职业生涯规划书
2014/01/14 职场文书
顶撞领导检讨书
2014/01/29 职场文书
企业介绍信范文
2015/01/30 职场文书
未婚证明格式
2015/06/15 职场文书
大学生村官入党自传
2015/06/26 职场文书
高中历史教学反思
2016/02/19 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技