我是靠谱客的博主 阔达星星,最近开发中收集的这篇文章主要介绍opencv(ORB算法)实现相似度检测,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 直接上代码


# 自定义计算两个图片相似度函数
def img_similarity(img1_path, img2_path):
"""
:param img1_path: 图片1路径
:param img2_path: 图片2路径
:return: 图片相似度
"""
try:
# 读取图片
img1 = cv2.imread(img1_path, cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread(img2_path, cv2.IMREAD_GRAYSCALE)
w ,h = img1.shape
# img1 = img1[0 + 45:h]
# img2 = img2[0 + 45:h1]
cv2.imshow("img1", img1)
cv2.imshow("img2", img2)
cv2.waitKey(0)
# 初始化ORB检测器
orb = cv2.ORB_create()
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
# 提取并计算特征点
bf = cv2.BFMatcher(cv2.NORM_HAMMING)
# knn筛选结果
matches = bf.knnMatch(des1, trainDescriptors=des2, k=2)
# 查看最大匹配点数目
good = [m for (m, n) in matches if m.distance < 0.75 * n.distance]
# print(len(good))
# print(len(matches))
similary = float(len(good))/len(matches)
print("(ORB算法)两张图片相似度为:%s" % similary)
return similary
except:
print('无法计算两张图片相似度')
return '0'
if __name__ == '__main__':
name1='e.jpg'
name2='f.jpg'
# similary 值为0-1之间,1表示相同
similary = img_similarity(name1, name2)

文档: https://docs.opencv.org/3.3.1/d1/d89/tutorial_py_orb.html

参考:https://www.cnblogs.com/ronny/p/4083537.html

最后

以上就是阔达星星为你收集整理的opencv(ORB算法)实现相似度检测的全部内容,希望文章能够帮你解决opencv(ORB算法)实现相似度检测所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部