knnmatch match 学习笔记

sfm中使用了这个knnmatch,但是实际应用是取了其中的一个DMatch
注意这其中的DMatch的数据结构

'''
一对匹配点一个match,但是对于knn来说就是聚类分析,选取了n个匹配点,加入了一下约束距离
然后,match中的数据结构会对应着keypoint 和 descriptor中的下标

'''
    bf = cv2.BFMatcher(cv2.NORM_L2)
    # knn.match(,k = X)
    # 输出的是 k 个匹配上的特征点
    #也就是排在 k 排名的最优的点
    knn_matches = bf.knnMatch(query, train, k=2)
    for m, n in knn_matches:
        if m.distance < config.MRT * n.distance:
            # print(m)
            '''
            下面的三个变量是DMatch的数据结构
            '''
            # 目标图像的特征点的下标 以及描述符的下标
            print(m.queryIdx)
            # 源图像的特征点下标以及描述符下标 其实就是key_point的下标以及descriptor的下标
            print(m.trainIdx)
            # 两个描述符之间的距离
            print(m.distance)
            matches.append(m)

keypoint的数据结构
.pt:关键点坐标,.angle:表示关键点方向,.response表示响应强度,.size:标书该点的直径大小。

print(key1[matche.queryIdx].pt)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值