OpenCV中未记录的Group矩形变量
在OpenCV中的cascadedetect.cpp中,有几个OpenCV中未记录的Group矩形变量,opencv,Opencv,在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 gro
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);
void-group矩形(std::vector&rectList,int-groupThreshold,double-eps);
void group矩形(std::vector和rectList、std::vector和weights、int groupThreshold、double-eps);
void group矩形(std::vector和rectList、std::vector和rejectLevels、std::vector和levelWeights、int groupThreshold、double eps);
但在中,只有第一个变量被清楚地记录,第二个变量被提及,但没有解释权重
参数。第三个甚至没有提到
谁能解释一下
权重
、拒绝级别
和级别权重
的含义吗?我阅读了组矩形
源代码,并在一定程度上理解了这些参数的含义
groupRectangles
在cascadedetest.cpp中定义,该文件由OpenCV中的traincascade项目使用。该项目使用viola jones的级联adaboost框架来检测对象,因此它有几个级联阶段,每个阶段都是一个强分类器。默认情况下,级联分类器仅在输入样本通过每个阶段时输出正值,但如果要绘制ROC曲线,还可以将其设置为输出样本被拒绝的阶段索引
因此,rejectLevels
表示矩形被拒绝的阶段的索引。根据源代码,权重
的效果与拒绝级别
的效果相同
上述两个参数对我们来说可能不太实用,但levelWeights
有时很有用。它最初是拒绝它的stage输出的矩形的分数,但我们可以将其用于更一般的用途。如果每个矩形都有一个分数(无论它来自何处),并且我们想要得到分组矩形的分数,那么groupRectangles
的文档化变体将不会帮助我们。我们必须使用第三个选项,将拒绝级别
设置为零:
vector<int> levels(wins.size(), 0);
groupRectangles(wins, levels, scores, groupThreshold, eps);
向量级别(wins.size(),0);
组矩形(赢、级别、分数、组阈值、每股收益);
其中
得分
是获胜
的得分。它们的尺寸一样。太棒了!你能解释一下参数“eps”是什么意思吗?谢谢。@BonderWu,参数“eps”在中有解释。