• 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

  • 相关阅读:
    多层动态库的编译及使用
    gxx -L和/etc/ld.so.conf的理解
    cmake 创建并调用动态库和静态库
    cifX驱动安装及SYCON.net的使用
    企业号新手指引
    转:Python正则表达式指南
    Windows平台安装Beautiful Soup
    微信企业号、订阅号、服务号之间有什么区别和不同
    常见HTTP状态(304,200等)
    微信内置浏览器对于html5的支持
  • 原文地址:https://www.cnblogs.com/botoo/p/8416315.html
Copyright © 2020-2023  润新知