>  기사  >  웹 프론트엔드  >  Python을 사용하여 이미지 유사성을 확인하는 방법

Python을 사용하여 이미지 유사성을 확인하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-03-08 13:47:554166검색

이번에는 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으로 문의하세요.