이번에는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!