- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在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
参数。第三个甚至没有提到。
谁能解释一下weights
、rejectLevels
和levelWeights
的含义?
最佳答案
阅读了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);
其中scores
为wins
的分数。它们的大小相同。
关于opencv - OpenCV 中未记录的 groupRectangles 变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378932/
我有一个像这样的边界框的图像: 我想合并重叠的边界框。 我试过:cv::groupRectangles(detected, 1, 0.8) 我的期望是每个集群都有一个盒子。 但是我得到了这个: 如您所
您好,我正在尝试简单的级联人员检测,我想使用 cv2.groupRectangles(),但是每当我使用它时它都会崩溃: **OpenCV 错误:未知函数断言失败 (channels() == CV_
我正在使用 OpenCV,并希望将具有显着重叠的矩形组合在一起。我已经尝试为此使用 groupRectangles ,它采用组阈值参数。阈值为 0 时,它根本不进行任何分组,阈值为 1 时仅返回至少是
所以我尝试使用 OpenCV 自动检测图表中的轴标签。现在,我的程序相对较好地检测了标签并输出了一个矩形列表,但一个轴标签值通常被分成许多矩形。我想将它们组合在一起,我听说 cv2.groupRect
在OpenCV的cascadedetect.cpp中,groupRectangles函数有几种变体: void groupRectangles(std::vector& rectList, int g
我想问一下 groupRectangles 函数。 我正在用 python 编写以下代码 - gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #definin
我正在尝试将对 opencv 的 groupRectangles() 的调用从 python 转换为 c++,并且注意到 python 绑定(bind)的输出与 c++ 调用的输出不匹配。 我编辑了下
我正在尝试使用 cv2.groupRectangles 加入神经网络提出的边界框。 问题是,对于以下边界框,它返回 [[4]] 作为连接区域之一。我希望它输出 4 个值。 x0, y0, x1, y1
我是一名优秀的程序员,十分优秀!