zoukankan      html  css  js  c++  java
  • python实战===用python对比两张图片的不同


    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')

    执行结果:

     

     

     

     

     



    第二种方法:

    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,还是比较小的:

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

    关于Pillow库的详细文档:

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

    顺便提一下

    如果有任何问题,你可以在这里找到我 ,软件测试交流qq群,209092584

  • 相关阅读:
    Linux系统管理05-----权限及归属管理
    Linux系统安装管理04----账号管理
    Linux系统管理03-----安装与管理程序
    Zabbix 监控主机
    Zabbix 页面优化
    基于 MHA 的MySQL高可用-CentOS7(理论)
    基于 MHA 的MySQL高可用-CentOS7(实例)
    部署Jumpserver环境
    GNS3连接本地服务器报错
    zabbix 安装部署
  • 原文地址:https://www.cnblogs.com/botoo/p/8416315.html
Copyright © 2011-2022 走看看