用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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
Jun 05 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Django使用HttpResponse返回图片并显示的方法
May 22 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
python监测当前联网状态并连接的实例
Dec 18 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
python名片管理系统开发
Jun 18 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 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
js 页面输出值
2008/11/30 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
python的即时标记项目练习笔记
2014/09/18 Python
python3编码问题汇总
2016/09/06 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
python操作oracle的完整教程分享
2018/01/30 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
十八大感想感言
2014/02/10 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
兴趣班停课通知
2015/04/24 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
2015入党个人自传范文
2015/06/26 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python
MySQL慢查询优化解决问题
2022/03/17 MySQL