python 判斷圖片相似度一個(gè)十分簡(jiǎn)單的示例,只是個(gè)例子,精度可能不是很高。主要介紹一下原理:先將圖片轉(zhuǎn)為 12x12像素的灰度圖片--獲取圖片平均灰度--遍歷圖片內(nèi)部10x10像素(去掉周?chē)?像素)--比較每一個(gè)像素與平均值
from PIL import Image import os #import hashlib def getGray(image_file): tmpls=[] for h in range(0, image_file.size[1]):#h for w in range(0, image_file.size[0]):#w tmpls.append( image_file.getpixel((w,h)) ) return tmpls def getAvg(ls):#獲取平均灰度值 return sum(ls)/len(ls) def getMH(a,b):#比較100個(gè)字符有幾個(gè)字符相同 dist = 0; for i in range(0,len(a)): if a[i]==b[i]: dist=dist+1 return dist def getImgHash(fne): image_file = Image.open(fne) # 打開(kāi) image_file=image_file.resize((12, 12))#重置圖片大小我12px X 12px image_file=image_file.convert("L")#轉(zhuǎn)256灰度圖 Grayls=getGray(image_file)#灰度集合 avg=getAvg(Grayls)#灰度平均值 bitls=''#接收獲取0或1 #除去變寬1px遍歷像素 for h in range(1, image_file.size[1]-1):#h for w in range(1, image_file.size[0]-1):#w if image_file.getpixel((w,h))>=avg:#像素的值比較平均值 大于記為1 小于記為0 bitls=bitls+'1' else: bitls=bitls+'0' return bitls ''' m2 = hashlib.md5() m2.update(bitls) print m2.hexdigest(),bitls return m2.hexdigest() ''' a=getImgHash("./Test/測(cè)試圖片.jpg")#圖片地址自行替換 files = os.listdir("./Test")#圖片文件夾地址自行替換 for file in files: b=getImgHash("./Test/"+str(file)) compare=getMH(a,b) print file,u'相似度',str(compare)+'%'
大小--如果大則字符串加1不然加0(這里我選用字符串保存,其實(shí)方法很多的)--接下去就是遍歷文件夾中圖片了,比較相似度,返回相似度了
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注Gxl網(wǎng)其它相關(guān)文章!
相關(guān)閱讀:
簡(jiǎn)單的冒泡以及雙向冒泡排序案列
用來(lái)下載圖片的javascript腳本
簡(jiǎn)單的jQuery點(diǎn)擊水紋波動(dòng)動(dòng)畫(huà)示例
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com