Размер отдельных ограничивающих рамок?

Я хочу создать программное обеспечение, которое обнаружит все объекты на изображении и удалит все, кроме самого большого. Я получил все отдельные ограничивающие рамки & контуры нарисованы, но как мне сравнить размеры каждой отдельной ограничивающей рамки / контура, чтобы определить, какой из них самый большой?

0

Решение

Ваши ограничивающие рамки 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;
}
}
1

Другие решения