python+PIL實現(xiàn)圖片對比(一)

前提

前陣子報了個班,學(xué)了一些android UI自動化相關(guān)的東西,于是想到第一家單位在做android手機自動化的時候,有用到圖片對比檩小,來確定是否點到指定的頁面开呐,遂想在appium+python做UI自動化時,也能夠圖片對比來判定是否到了指定頁面规求,也算是另一種斷言方式筐付。
說干就干,上網(wǎng)一搜果然有一個第三方庫可以處理圖片 傳送門 阻肿,這篇文章算是一個學(xué)習(xí)小結(jié)瓦戚,先了解一些基本的語法,后面準(zhǔn)備用到android UI自動化中

簡單介紹

首先安裝同其他第三方庫丛塌,直接 pip install pillow ,from PIL import Image 如果沒有報錯則說明安裝成功
Pillow中最重要的類就是Image较解,可以通過以下幾種方式實例化:從文件中讀取圖片,處理其他圖片得到新圖片赴邻,直接創(chuàng)建一個圖片印衔。
我這邊僅僅是用到了直接打開圖片,然后進行對比姥敛,所以其他不多做介紹
使用Image模塊中的open函數(shù)打開一張圖片:
image1= Image.open(pic1)
對比圖片的時候用到了一個像素奸焙,img1.histogram() ,這個函數(shù)會返回一個列表彤敛,里面是每個坐標(biāo)像素點的RGB值与帆,對比圖片不同的思路,就是對比兩張圖片RGB值
這邊的對比思路參考了 monkey 的一篇文章 圖片對比 墨榄,致謝!!!
具體代碼如下:

#coding=utf-8
#author='Shichao-Dong'

from PIL import Image
import math
import operator

def compare(pic1,pic2):
    '''
    :param pic1: 圖片1路徑
    :param pic2: 圖片2路徑
    :return: 返回對比的結(jié)果
    '''
    image1 = Image.open(pic1)
    image2 = Image.open(pic2)

    histogram1 = image1.histogram()
    histogram2 = image2.histogram()

    differ = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2,histogram1, histogram2)))/len(histogram1))

    print differ
    return differ

compare(r'D:\Ptest\Testcase\11.jpg',r'D:\Ptest\Testcase\22.jpg')

這個differ我這邊就根據(jù)我的理解玄糟,簡單解釋一下計算過程吧
首先histogram得到的結(jié)果是一個列表[ ]

list(map(lambda a,b: (a-b)**2,histogram1, histogram2))

這個表達式獲得結(jié)果是 一個 histogram1[i] - histogram2[i] 相減的結(jié)果平方的新的列表
即:h3=[(h1[1]-h2[1])2,..........(h1[n]-h2[n])2](2是平方的意思,不知道怎么表達所以就這樣寫吧)

reduce(operator.add, list(map(lambda a,b: (a-b)**2,histogram1, histogram2)))/len(histogram1)

這個函數(shù)返回的就是 a=(h3[1]+h3[2]+......+h3[n])/n
math.sqrt(a)這個就很容易理解啦袄秩,就是把a開2次方

最后得到differ,如果兩張圖 一模一樣那么最終結(jié)果differ應(yīng)該是0茶凳,即differ越小嫂拴,圖片越相似(甚至相同),differ越大贮喧,圖片差異越大

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筒狠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箱沦,更是在濱河造成了極大的恐慌辩恼,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谓形,死亡現(xiàn)場離奇詭異灶伊,居然都是意外死亡,警方通過查閱死者的電腦和手機寒跳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門聘萨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人童太,你說我怎么就攤上這事米辐。” “怎么了书释?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵翘贮,是天一觀的道長。 經(jīng)常有香客問我爆惧,道長狸页,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任扯再,我火速辦了婚禮芍耘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熄阻。我一直安慰自己齿穗,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布饺律。 她就那樣靜靜地躺著窃页,像睡著了一般。 火紅的嫁衣襯著肌膚如雪复濒。 梳的紋絲不亂的頭發(fā)上脖卖,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音巧颈,去河邊找鬼畦木。 笑死,一個胖子當(dāng)著我的面吹牛砸泛,可吹牛的內(nèi)容都是我干的十籍。 我是一名探鬼主播蛆封,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勾栗!你這毒婦竟也來了惨篱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤围俘,失蹤者是張志新(化名)和其女友劉穎砸讳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體界牡,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡簿寂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宿亡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片常遂。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挽荠,靈堂內(nèi)的尸體忽然破棺而出克胳,到底是詐尸還是另有隱情,我是刑警寧澤坤按,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布毯欣,位于F島的核電站馒过,受9級特大地震影響臭脓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腹忽,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一来累、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窘奏,春花似錦嘹锁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骇扇,卻和暖如春摔竿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背少孝。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工继低, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人稍走。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓袁翁,卻偏偏與公主長得像柴底,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粱胜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,190評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫柄驻、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,109評論 4 62
  • 開了一上午的會年柠,無聊的犯困凿歼。 中午, 歡子想去距離2公里外的地方吃炸雞冗恨,不明白答憔,歡子總是對雞這種動物情有獨鐘~ 我...
    瑤女天姿閱讀 432評論 0 1
  • 連續(xù)314 【耶3:1】“有話說,人若休妻掀抹,妻離他而去虐拓,作了別人的妻,前夫豈能再收回她來傲武?若收回她來蓉驹,那地豈不是大...
    報佳音閱讀 820評論 0 0
  • 第13天·21天OH卡美顏瘦身課 #玩卡不卡·每日一抽# 每一位都可以通過這張卡片覺察自己: 1、直覺他叫什么名字...
    田__田閱讀 212評論 0 0