我想制作一个软件来检测图像中的所有对象并删除除最大对象之外的所有对象。我得到了所有单独的边界框和绘制的轮廓但我如何比较每个不同的边界框/轮廓的大小,以确定哪一个是最大的?
答案 0 :(得分:1)
你的边界框CvRect
是对象吗?假设"最大"意味着最大的区域,你可以做这样的事情。
std::vector<CvRect*> vBoundingBoxes; // assume this has all your boxes
int largestArea = 0;
CvRect* pLargestBox = NULL;
for (auto it = vBoundingBoxes.begin(); it != vBoundingBoxes.end(); ++it)
{
CvRect* pCurrentBox = *it;
int iArea = pCurrentBox->width * pCurrentBox->length;
if (iArea > largestArea)
{
largestArea = iArea;
pLargestBox = pCurrentBox;
}
}