微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/c/115576.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐