公司动态
OpenCV 特征点匹配(有空看看就行)
OpenCV 特征点匹配核心流程:图像 1 →提取特征点 + 描述子;图像 2→提取特征点 + 描述子;匹配器对两组描述子做匹配;得到匹配对;再过滤错误匹配。两种主流匹配器:BFMatcher 暴力匹配器(Brute‑Force,暴力)FlannBasedMatcher FLANN 快速近似匹配(大数据量速度更快)ORB 是二进制描述子,用汉明距离;SIFT/SURF 浮点描述子用 L2 欧氏距离。1、BFMatcher 暴力匹配逐个拿 A 图每一个描述子,和 B 图全部描述子算距离,找距离最小的。cpp//ORB二进制描述子,必须NORM_HAMMING BFMatcher matcher(NORM_HAMMING); vectorDMatch matches; matcher.match(des1, des2, matches);des1:图 1 描述子des2:图 2 描述子matches:vectorDMatch,保存匹配结果。DMatch 结构体成员cppstruct DMatch { int queryIdx; // des1中特征点的下标 int trainIdx; // des2中特征点的下标 float distance; // 两个描述子之间的距离,越小代表越匹配 };ORB