图片相似度处理 - use PIL库

2 篇文章 0 订阅
1 篇文章 0 订阅

转载请注明出处:http://blog.csdn.net/cici_li

在近期的crosswalk GUI automation项目中,结果pass/fail的判断大致有以下几种

1. 期望结果可量化:期望结果即UI展现的web element的字符串,或者数值等,抓取web页面元素,跟期望结果比对;

2. 期望结果为ref data:调用另一种方法来实现相同的效果,以此产生ref html data,然后将结果html与ref html做对比

3. 期望结果为之前运行的正确结果(baseline data):在GUI中,之前运行的正确结果可以截屏(screenshot)保存,作为baseline img,然后将本次执行结果与之比对。

该方法有个弊端,就是在不同device上执行时,由于分辨率不同,baseline img会不同,这种情况下baseline img需要构造多份。


这里我们讲下在第三种方法中,如何将结果数据与baseline img来比对。这就涉及到图片相似度计算,我们调用python image library (PIL)来处理,代码如下:


#!/usr/bin/env python
import Image

#standardize the image 
def make_regalur_image(img, size = (256, 256)):
    return img.resize(size).convert('RGB')

def hist_similar(lh, rh):
    assert len(lh) == len(rh)
    return sum(1 - (0 if l == r else float(abs(l - r))/max(l, r)) for l, r in zip(lh, rh))/len(lh)

#Images similarity calculation
def cal_images_similar(img1,img2):
   #open two images
   fimg1=Image.open(img1)
   fimg2=Image.open(img2)

   #regular the image
   reg_img1 = make_regalur_image(fimg1)
   reg_img2 = make_regalur_image(fimg2)

   #calculate the similar 
   ret=hist_similar(reg_img1.histogram(), reg_img2.histogram())
   return ret*100  

def main():
   img1 = "./a.png"
   img2 = "./b.png"
   img3 = "./asame.png"
   
   similarity = cal_images_similar(img1,img2)
   print "similarity of a,b is: ", similarity

   similarity = cal_images_similar(img1,img3)
   print "similarity of a,asame is: ", similarity

if __name__ =="__main__":
   main()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值