Maison  >  Article  >  interface Web  >  Comment utiliser Python pour déterminer la similarité des images

Comment utiliser Python pour déterminer la similarité des images

php中世界最好的语言
php中世界最好的语言original
2018-03-08 13:47:554164parcourir

Cette fois, je vais vous montrer comment utiliser python pour déterminer la similitude des images Quelles sont les précautions pour utiliser python pour déterminer la similitude des. images, comme suit C'est un cas pratique, jetons-y un coup d'œil.

Python est un exemple très simple de détermination de la similarité d'une image. Ce n'est qu'un exemple et la précision peut ne pas être très élevée. Présentez principalement le principe : convertissez d'abord l'image en une image en niveaux de gris de 12x12 pixels - obtenez l'échelle de gris moyenne de l'image - parcourez les 10x10 pixels à l'intérieur de l'image (supprimez le pixel environnant) - comparez chaque pixel avec la valeur moyenne

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)+'%'

Taille--si elle est grande, ajoutez 1 à la chaîne , sinon ajoutez 0 (ici je choisis de l'enregistrer sous forme de chaîne, il y a en fait plusieurs façons)--La prochaine étape consiste à parcourir le dossier L'image est sélectionnée, la similitude est comparée et la similitude est renvoyée

Je crois que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !

Lecture connexe :

Cas de tri à bulles simple et bidirectionnel

Javascript utilisé pour télécharger des images Script

Exemple d'animation simple d'ondulation de l'eau avec clic jQuery

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn