gpt4 book ai didi

opencv - OpenCV 中未记录的 groupRectangles 变体

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:02 26 4
gpt4 key购买 nike

在OpenCV的cascadedetect.cpp中,groupRectangles函数有几种变体:

void groupRectangles(std::vector<Rect>& rectList, int groupThreshold, double eps);
void groupRectangles(std::vector<Rect>& rectList, std::vector<int>& weights, int groupThreshold, double eps);
void groupRectangles(std::vector<Rect>& rectList, std::vector<int>& rejectLevels, std::vector<double>& levelWeights, int groupThreshold, double eps);

但是在OpenCV document ,只有第一个变体被清楚地记录下来,提到了第二个变体,但没有解释 weights 参数。第三个甚至没有提到。

谁能解释一下weightsrejectLevelslevelWeights 的含义?

最佳答案

阅读了groupRectangles源码,对这些参数的含义有了一定的理解。

groupRectangles 在 cascadedetect.cpp 中定义,它被 OpenCV 中的 traincascade 项目使用。该项目使用viola-jones的级联adaboost框架来检测物体,因此它有几个级联阶段,每个阶段都是一个强分类器。默认情况下,级联分类器仅在输入样本通过每个阶段时才输出正数,但如果您想绘制 ROC 曲线,您也可以将其设置为输出样本被拒绝阶段的索引。

所以rejectLevels表示矩形被拒绝的阶段索引。根据源码,weight的效果与rejectLevels相同。

以上两个参数对我们来说可能不是很实用,但是levelWeights有时候还是很有用的。它最初是拒绝它的阶段输出的矩形的分数,但我们可以将它用于更一般的目的。如果每个矩形都有一个分数(无论它来自哪里),并且我们想要获得分组矩形的分数,那么 groupRectangles 的文档变体将无济于事。我们必须使用第三个,将 rejectLevels 设置为零:

vector<int> levels(wins.size(), 0);
groupRectangles(wins, levels, scores, groupThreshold, eps);

其中scoreswins的分数。它们的大小相同。

关于opencv - OpenCV 中未记录的 groupRectangles 变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com