使用OpenCV提取更少的关键点

4

我需要实时进行物体识别(使用来自USB视频相机的图像)

有没有办法告诉

SurfFeatureDetector.detect(); 

提取更少的关键点?
2个回答

4

通过修改阈值,您可以在一定程度上控制关键点的数量。但无论如何,这并不能直接控制关键点的最大数量。

如果您想要将其停止在最大值处,则必须进入 .cpp 中的算法(该算法不可调试)并在循环中设置条件。我曾经在 OpenCV 的某些算法中这样做,以获得计算效率。问题在于,您需要复制代码并将其粘贴到自己的类中才能进行修改,并且在您正确操作之前可能会出现一些链接问题。


2
这里是SurfFeatureDetector的构造函数。使用该构造函数,您可以通过三个基本参数减少关键点数量:
  • hessianThreshold:增加此项
  • octaves:减少此项
  • octavelayers:减少此项
我不知道SURF实现的详细信息,但是这篇SO答案指向了解释整个算法的文档,因此您可以选择如何更改这些内容。
作为直接研究实现的替代方案,我发现Find-Object非常有用,可以尝试许多特征检测算法设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接