首頁 >web前端 >js教程 >如何使用python來判斷圖片相似度

如何使用python來判斷圖片相似度

php中世界最好的语言
php中世界最好的语言原創
2018-03-08 13:47:554196瀏覽

這次帶給大家如何使用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中文網其它相關文章!

相關閱讀:

簡單的冒泡以及雙向冒泡排序案列

##用來下載圖片的javascript腳本

簡單的jQuery點擊水紋波動動畫範例
#

以上是如何使用python來判斷圖片相似度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn