我想知道orb特征检测器的参数。我使用它作为关键点提取器和描述符。作为匹配器,我使用BFMatcher。
目前我这样使用它:
ORB orb(25, 1.0f, 2, 10, 0, 2, 0, 10);
因为我正在查看小图像和快速性能,所以我将功能数量减少到大约25个。这对我的应用程序似乎仍然可以正常工作。问题从第二个参数开始。其默认值为1.2。我刚才将它设置为1,但发现它的速度更快,值更高。问题是,我开始遇到这个问题:
OpenCV错误:断言失败((= = CV8U&& dtype == CV_32S)|| dtype == CV_32F)cv_batchDistance,file .......... stat.cpp,line 2480
接下来是金字塔等级的参数。默认值是8.我将它设置为2,这给了我另一个很好的性能提升。但是如果我将它设置为1,它将抛出与上面相同的错误。
由于我正在使用小图片,我试图将其设置为较低的值。但它似乎没有改变任何东西。这同样适用于最后一个参数(patchSize)。它声明这些参数应大致匹配。
我对其余参数不感兴趣。
正如我在其他问题中所解释的那样,我正在尝试跟踪视频中的对象。为此我将为每个边界框提取其功能,并尝试将其与下一个功能的边界框进行匹配。通过这样做,我试图建立帧之间的关系。到目前为止它运作良好。但我需要更快。如果有超过一些边界框需要太长时间,因为我想实时拥有@ 30FPS。
如果有人能帮我解决这些问题,我会很感激。
答案 0 :(得分:0)
根据文档,参数4和8的值表示关键点应该与边界有多远。由于您使用的是小图片,因此10个像素可能是一个不错的选择,但如果您想要更多居中的关键点则需要更大的值。第二个参数必须大于1,我不知道您选择了什么值,但您可以尝试2.您对参数编号7不感兴趣,但您可以将其设置为1而不是0,因为1对应于FAST_SCORE,其计算速度比HARRIS_SCORE快。如果您添加代码,有人可以帮助您解决错误。