Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Calculating the area of Bounding Box

I have created an application that Segments an image on the basis of a predefined color using inRange function. I then draw bounding box around the detected object.

My question here is how do I determine region properties such as: area, size, height and with, center point.

Here i placed a screen dump example.....

image description

How should i approach to retrieve region properties of these bounding boxes or any other bounding boxes that get drown.......?

Regards

Calculating the area of Bounding Box

I have created an application that Segments an image on the basis of a predefined color using inRange function. I then draw bounding box around the detected object.

My question here is how do I determine region properties such as: area, size, height and with, center point.

Here i placed a screen dump example.....

image description

How should i approach to retrieve region properties of these bounding boxes or any other bounding boxes that get drown.......?

Here is my code responsible for drawing the Boxes:

vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
    findContours(mBlur, contours, hierarchy, CV_RETR_EXTERNAL,  CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );



     /// Approximate contours to polygons + get bounding rects and circles
  vector<vector<Point> > contours_poly( contours.size() );
  vector<Rect> boundRect( contours.size() );
  vector<Point2f>center( contours.size() );
  vector<float>radius( contours.size() );

  for( int i = 0; i < contours.size(); i++ )
     { approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true );
       boundRect[i] = boundingRect( Mat(contours_poly[i]) );
     }


  /// Draw polygonal contour + bonding rects
  Mat drawing = Mat::zeros( range_out.size(), CV_8UC3 );
  for( int i = 0; i< contours.size(); i++ )
     {
       Scalar color = Scalar(255,0,255);
       drawContours( drawing, contours_poly, i, color, 1, 8, vector<Vec4i>(), 0, Point() );
       rectangle( drawing, boundRect[i].tl(), boundRect[i].br(), color, 2, 8, 0 );

Regards