Calculate the area of an object with OpenCV

一笑奈何 提交于 2019-12-18 02:48:12

问题


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?


回答1:


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;
}


来源:https://stackoverflow.com/questions/11631533/calculate-the-area-of-an-object-with-opencv

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!