python opencv 特征匹配_特征匹配(Brute-Force和FLANN匹配) (OpenCV+Python)

本文介绍了OpenCV中使用Python进行特征匹配的方法,包括Brute-Force匹配和FLANN匹配器。通过ORB和SIFT描述符展示了如何进行匹配,并提供了代码示例,解释了相关函数的用法和参数设置,如BFMatcher和FlannBasedMatcher。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文内容是对Opencv官方文档的学习笔记

蛮力(Brute0Force)匹配

原理

蛮力匹配很简单,首先在第一幅图像中选取一个关键点,然后依次与第二幅图像的每一个关键点进行(描述符)距离测试,最后返回距离最近的关键点。

相关函数介绍

在这里由于有不同版本的OpenCV,下面将要涉及到的函数也会有差别,在这里先列出作者的OpenCV版本为3.4.1。

对于BF匹配器,我们需要用 cv2.BFMatcher()函数创建一个BFMatcher对象,他有两个可选参数:

normType:它是用来指定要使用的距离测试类型。

默认值为 cv2.NORM_L2。这很适合SIFT和SURF等(cv2.NORM_L1也可以)。2.对于使用二进制描述符的ORB,BRIEF,BRISK等算法,要使用 cv2.NORM_HAMMING,这样就会返回两个测试对象之间的汉明距离,如果ORB算法的参数设置为VTA_K==3或者4,normType就应该设置为cv2.NORM_HAMMING2

crossCheck:为布尔变量,默认值为False。如果设置为True,匹配条件就会更加严格,假设A和B是两幅图像,只有当A中的第i个特征点与B中的第j个特征点距离最近,并且B中的第j个特征点到A中的第i个特征点也是最近(A中没有其他点到j的距离更近)时才会返回最佳匹配(i,j),也就是说这两个特征点要互相匹配才可以。

BFMatcher对象具有两个方法:

BFMatcher.match():返回最佳匹配。

BFMatcher.knnMatch():为每个关键点返回k个最佳匹配(将序排列之后取前k个),其中k是用户自己设定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值