c – 使用OpenCV计算对象的面积

前端之家收集整理的这篇文章主要介绍了c – 使用OpenCV计算对象的面积前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要使用OpenCV计算灰度图片中的blob /一个对象的面积(以Mat形式加载,而不是Ipl Image).
我认为获取边缘的坐标(边缘的数量从对象变为对象)或获取轮廓的所有坐标是一个好主意,然后使用contourArea()来计算我的对象的面积.

删除了所有的噪音,并通过使用findContours()(C中的编程)获得了一些很好和令人满意的轮廓.

findContours(InputOutputArray image,OutputArrayOfArrays contours,OutputArray hierarchy,int mode,int method,Point offset=Point());

现在我明白param轮廓已经拥有我对象的所有轮廓的坐标.我得到了吗?

如果是的,它有一种方法来访问它们?

如果没有,我如何得到轮廓的坐标呢?

谢谢你的赞!

解决方法

轮廓实际上被定义为
vector<vector<Point> > contours;

现在我觉得很清楚如何获取积分.

轮廓区域由一个很好地称为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;
}

猜你在找的C&C++相关文章