让我们看一下名为Features2D + Homography的this基本教程,找到一个已知对象。它使用SurfFeatureDetector来检测功能:
SurfFeatureDetector detector( minHessian );
std::vector<KeyPoint> keypoints_object, keypoints_scene;
detector.detect( img_object, keypoints_object );
detector.detect( img_scene, keypoints_scene );
然后使用SurfDescriptorExtractor
使用检测到的特征计算描述符(特征向量)。
我的问题是:
的 的 **** 除了的 * ***
1)在该示例中,使用了特征检测的Surf算法。我已经制作了自己的算法(Trajkovic)并且效果很好 - 找到了所有角落(图像特征)。然后我尝试使用SurfDescriptorExtractor,因为它在示例中使用。 问题是SurfDescriptorExtractor不想以正确的方式使用我的创建点(结果图片显示错误的连接,这意味着,提取器没有正确计算向量)。
2)我需要完全使用opencv,这就是重点;
3)“特征检测器”是一种算法,它试图在图像上找到关键点(特征或角点),“描述符提取器” - 是一种算法,它可以计算特征向量,以便最好地理解关键点位置和方向;
4)总之,在示例中,所有关键点都连接在两个图像上(如教程的最后一张图片所示),然后用矩形突出显示。但是当我使用Trajkovic算法时,它们以错误的方式连接,这就是为什么没有突出显示的矩形。
答案 0 :(得分:0)
虽然我们不看您的实现就无法查明问题,甚至可能进行一些调查,但我可以为您指明解决方案的方向:OpenCV源代码,您可以将其与实现进行比较。
看看detectAndCompute()
函数:
Harris拐角检测的工作原理有所不同,其API也是如此: