這次帶給大家如何使用python來判斷圖片相似度,使用python來判斷圖片相似度的注意事項有哪些,下面就是實戰案例,一起來看一下。
python 判斷圖片相似度一個十分簡單的例子,只是個例子,精確度可能不是很高。主要介紹一下原理:先將圖片轉為 12x12像素的灰階圖片--取得圖片平均灰階--遍歷圖片內部10x10像素(去掉周圍1像素)--比較每一個像素與平均值
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个字符有几个字符相同 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) # 打开 image_file=image_file.resize((12, 12))#重置图片大小我12px X 12px image_file=image_file.convert("L")#转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/测试图片.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(這裡我選用字串保存,其實方法很多的)--接下去就是遍歷資料夾中圖片了,比較相似度,返回相似度了
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
相關閱讀:
以上是如何使用python來判斷圖片相似度的詳細內容。更多資訊請關注PHP中文網其他相關文章!