python 图片对比相似度_python 判断图片相似度一个十分简单的示例

python 判断图片相似度一个十分简单的示例

http://www.thinksaas.cn/topics/0/399/399804.html

python 判断图片相似度一个十分简单的示例,只是个例子,精度可能不是很高。主要介绍一下原理:先将图片转为 12x12像素的灰度图片--获取图片平均灰度--遍历图片内部10x10像素(去掉周围1像素)--比较每一个像素与平均值大小--如果大则字符串加1不然加0(这里我选用字符串保存,其实方法很多的)--接下去就是遍历文件夹中图片了,比较相似度,返回相似度了

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):#比较64个字符有几个字符相同

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言模型,适用于各种自然语言处理任务,其中包括词组语义相似度计算。 BERT的主要思想是利用Transformer模型来捕捉句子中的上下文信息,从而更好地理解每个词的含义。在词组语义相似度计算中,我们可以使用BERT模型来计算两个词组之间的相似度得分。 具体来说,我们可以将两个词组输入到BERT模型中,获取它们的表示向量,然后通过余弦相似度计算它们之间的相似度得分。具体实现可以使用Python编程语言和PyTorch深度学习框架。 以下是一个示例代码: ```python import torch from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') def get_similarity_score(text1, text2): encoded_text = tokenizer(text1, text2, return_tensors='pt', padding=True, truncation=True) with torch.no_grad(): outputs = model(**encoded_text) embeddings = outputs.last_hidden_state[:, 0, :] similarity_score = torch.nn.functional.cosine_similarity(embeddings[0], embeddings[1], dim=0) return similarity_score.item() # 示例用法 text1 = "python词组语义相似度" text2 = "NLP中的BERT语义相似度计算" similarity_score = get_similarity_score(text1, text2) print("相似度得分:", similarity_score) ``` 这里我们使用了BERT的预训练模型和预训练分词器,对输入的两个文本进行编码并获取它们的表示向量,然后使用余弦相似度计算它们之间的相似度得分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值