Home  >  Article  >  Web Front-end  >  How to use python to determine image similarity

How to use python to determine image similarity

php中世界最好的语言
php中世界最好的语言Original
2018-03-08 13:47:553988browse

This time I will show you how to use python to determine the image similarity. What are the notes for using python to determine the image similarity, as follows: This is a practical case, let’s take a look at it.

python A very simple example of judging the similarity of images. It is just an example and the accuracy may not be very high. Mainly introduce the principle: first convert the picture to a 12x12 pixel grayscale picture--get the average grayscale of the picture--traverse the 10x10 pixels inside the picture (remove the surrounding 1 pixel)--compare each pixel with the average value

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

Size--If it is large, then string add 1, otherwise add 0 (I choose string saving here, in fact there are many methods)--The next step is traverse the pictures in the folder , compare the similarity, and return the similarity

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!

Related reading:

Simple bubble and two-way bubble sorting case

Javascript used to download images Script

Simple jQuery click water ripple animation example

The above is the detailed content of How to use python to determine image similarity. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn