匹配方法,他们每个都使用描述符列表,称为查询列表,并与训练好的字典中的描述符进行比较。在这三组中,有三种方法:match(),knnMatch(),radiusMatch(),这些方法中的每一种以稍微不同的方式计算匹配()
match()方法需要通常cv::Mat格式的单个关键点描述符列表querryDesscriptors。在这种情况下,请记住每行代表单个描述符,每列是该描述符向量表示的一个维度。match()还需要一个cv::Dmatch对象的STL向量,它可以填充各个检测到的匹配项,在match()方法的情况下,查询列表上的每个关键点将与列表中的"最佳匹配"相匹配。
knnMatch()函数,它需要与match()相同的列表描述符,然而在这种情况下,对于查询列表中的每个描述符,它将从字典中找到特定数量的最佳匹配,该数由整数K指定,函数名中的knn代表K-最近邻。来自match()的cv::DMatch对象被代替成在knnMatch()方法中称为matches的cv::DMatch对象向量的向量。
radiusMatch():。与搜素k个最佳匹配的k近邻不同,半径匹配返回了查询描述符特定距离内的所有匹配。除了整数k代替最大距离maxDistance 之外,参数及radiusMatch()的均值都与knnMatch()的相同。