Calculate the area of an object with OpenCV

c++, contour, opencv

Solution

`contours` is actually defined as

vector<vector<Point> > contours;

And now I think it's clear how to access its points.

The contour area is calculated by a function nicely called `contourArea()`:

for (unsigned int i = 0;  i < contours.size();  i++)
{
     std::cout << "# of contour points: " << contours[i].size() << std::endl;

     for (unsigned int j=0;  j<contours[i].size();  j++)
     {
         std::cout << "Point(x,y)=" << contours[i][j] << std::endl;
     }

     std::cout << " Area: " << contourArea(contours[i]) << std::endl;
}

Problem

I need to calculate the area of a blob/an object in a grayscale picture (loading it as Mat, not as IplImage) using OpenCV. I thought it would be a good idea to get the coordinates of the edges (number of edges change form object to object) or to get all coordinates of the contour and then use `contourArea()` to calculate the area of my object. I deleted all noise and got some nice and satisfying contours by using `findContours()` (programming in C++). ``` findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy,int mode, int method, Point offset=Point()); ``` Now I got to understand that param `contours` already owns the coordinates of all contours of my object. Did I get that right? If yes, it there a way to access them? And if no, how do I get the coordinates of the contour anyway?

Original source