10

我需要使用OpenCV计算灰度图片中的 blob/对象的面积(将其加载为 Mat,而不是 IplImage) 。我认为获取边缘的坐标(边缘的数量从对象到对象的变化)或获取轮廓的所有坐标然后contourArea()用来计算我的对象的面积是一个好主意。

findContours()我通过使用(C++ 编程)删除了所有噪音并获得了一些漂亮且令人满意的轮廓。

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

现在我明白了 paramcontours已经拥有我的对象所有轮廓的坐标。我做对了吗?

如果是,有办法访问它们吗?

如果没有,无论如何我如何获得轮廓的坐标?

4

1 回答 1

28

contours实际上定义为

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;
}
于 2012-07-24T13:19:10.983 回答