使用 rejectLevels 和 levelWeights 调用重载时,DetectMultiScale 从不 returns

DetectMultiScale never returns when calling overload with rejectLevels and levelWeights

我正在尝试修改基于 OpenCV 的代码,以便从级联分类器中获取每个检测到的对象的置信度。当我调用 CascadeClassifierdetectMultiScale 方法的 the overload 时,该方法取出 rejectLevelslevelWeights 的参数(并为 outputRejectLevels 传递 true) ,呼叫永远不会完成。在内部,对 detectMultiScaleNoGrouping 的调用很快完成但 returns 数百万个对象。当我不传递任何一个额外的输出参数并将 outputRejectLevels 设置为 false 时,相同的调用 returns 60 对象和函数的其余部分工作正常。

我不应该调用这个重载吗?还是有不同的原因导致它返回太多值以至于函数永远不会完成?我怎样才能正确地做到这一点?

注意:我看到 another question 似乎在引用同一个问题,但它没有包含太多关于问题本身的信息,也没有得到任何答案。

原来这已经在OpenCV的master分支中修复,但还没有发布(截至2016年4月18日)。我已确认手动应用补丁并重建可以解决问题。

相关讨论是here and the PR that must be included to fix the problem is this one。这是一个单行更改,因此在他们发布包含更改的官方版本之前应该很容易手动实施。