不使用“drawmatches”函数在特征点之间绘制一条线

sy4*_*456 5 opencv feature-detection keypoint

我通过在 features2d 框架中使用不同的检测器从连续两个中获得特征点:

在第一帧中,特征点以红色绘制 在此输入图像描述

在下一帧中,特征点以蓝色绘制 在此输入图像描述

我想在第一帧(带有红点的图像)内的这些红色和蓝色(匹配)点之间画一条线。 opencv中的drawmatches函数没有帮助,因为它显示一个窗口,其中两个连续帧彼此相邻以进行匹配。在 OpenCV 中可以吗?

提前致谢

roo*_*pig 2

我猜您想可视化每个关键点如何在两帧之间移动。据我所知,OpenCV中没有内置函数可以满足您的要求。

但是,当您调用该drawMatches()函数时,您已经有了两个关键点集(以 C++ 代码为例)vector<KeyPoint>& keypoints1, keypoints2和 matches vector<DMatch>& matches1to2。然后,您可以通过调用该函数来获取每个关键点的像素坐标Point keypoints1.pt并在关键点之间绘制线条line()

您应该注意,由于您要keypoints2在第一帧中进行绘制,因此像素坐标可能会超出 的大小img1

有一种快速的方法可以了解关键点的运动。下面是Matlab中显示的结果imshowpair()在此输入图像描述