我需要使用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; }