用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 15 Python
python3.4实现邮件发送功能
May 28 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
Pyqt5实现英文学习词典
Jun 24 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 Python
python 实现矩阵按对角线打印
Nov 29 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
Python面试不修改数组找出重复的数字
May 20 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往windows中添加用户
2006/12/06 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python中关于使用模块的基础知识
2015/05/24 Python
python实现名片管理系统
2018/11/29 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
python版DDOS攻击脚本
2019/06/12 Python
python实现五子棋小程序
2019/06/18 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Python3常用内置方法代码实例
2019/11/18 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
python在地图上画比例的实例详解
2020/11/13 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
给朋友的道歉信
2014/01/09 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
企业文化理念标语
2014/06/10 职场文书
会计工作检讨书
2015/02/19 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
Python办公自动化解决world文件批量转换
2021/09/15 Python