我需要使用OpenCV计算灰度图片中的blob /一个对象的面积(以Mat形式加载,而不是Ipl
Image).
我认为获取边缘的坐标(边缘的数量从对象变为对象)或获取轮廓的所有坐标是一个好主意,然后使用contourArea()来计算我的对象的面积.
我认为获取边缘的坐标(边缘的数量从对象变为对象)或获取轮廓的所有坐标是一个好主意,然后使用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 举报,一经查实,本站将立刻删除。