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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...