cv2.DescriptorMatcher_create(cv2.DescriptorMatcher_BRUTEFORCE_HAMMING与cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck=True)
时间: 2024-05-31 07:08:27 浏览: 178
两者都是OpenCV中用于特征匹配的函数,但是有以下区别:
1. cv2.DescriptorMatcher_create(cv2.DescriptorMatcher_BRUTEFORCE_HAMMING)是一个创建汉明距离匹配器的函数,用于匹配二进制描述符,而cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck=True)则是一个Brute-Force匹配器,用于匹配一般的特征描述符。
2. cv2.DescriptorMatcher_create(cv2.DescriptorMatcher_BRUTEFORCE_HAMMING)返回的是一个DescriptorMatcher对象,可以通过该对象的match()和knnMatch()方法进行特征匹配;cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck=True)返回的是一个BFMatcher对象,可以通过该对象的match()和knnMatch()方法进行特征匹配。
3. cv2.DescriptorMatcher_create(cv2.DescriptorMatcher_BRUTEFORCE_HAMMING)是一个基于暴力搜索的匹配器,时间复杂度较高,适用于小规模的特征匹配;cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck=True)是一个基于k-d树的匹配器,时间复杂度较低,适用于大规模的特征匹配。
4. cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck=True)还支持参数crossCheck=True,表示只有当第一幅图像的特征点匹配第二幅图像的特征点,而且第二幅图像的特征点也匹配第一幅图像的特征点时,才视为匹配成功,这样可以减少误匹配。而cv2.DescriptorMatcher_create(cv2.DescriptorMatcher_BRUTEFORCE_HAMMING)不支持该参数。
阅读全文