Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用OpenCV计算对象的面积_C++_Opencv_Contour - Fatal编程技术网

C++ 使用OpenCV计算对象的面积

C++ 使用OpenCV计算对象的面积,c++,opencv,contour,C++,Opencv,Contour,我需要使用OpenCV计算灰度图片中水滴/对象的面积(加载为Mat,而不是IplImage)。 我认为获得边的坐标(边的数量因对象而异)或获得轮廓的所有坐标,然后使用contourArea()计算对象的面积是个好主意 通过使用findContours()(用C++编程),我删除了所有的噪音,得到了一些令人满意的轮廓 现在我明白了,param等高线已经拥有我的对象的所有等高线的坐标。我说对了吗 如果是,有没有办法访问它们 如果没有,我怎么得到轮廓的坐标呢 等高线实际上定义为 vector<v

我需要使用OpenCV计算灰度图片中水滴/对象的面积(加载为Mat,而不是IplImage)。 我认为获得边的坐标(边的数量因对象而异)或获得轮廓的所有坐标,然后使用
contourArea()
计算对象的面积是个好主意

通过使用
findContours()
(用C++编程),我删除了所有的噪音,得到了一些令人满意的轮廓

现在我明白了,param
等高线
已经拥有我的对象的所有等高线的坐标。我说对了吗

如果是,有没有办法访问它们


如果没有,我怎么得到轮廓的坐标呢

等高线
实际上定义为

vector<vector<Point> > contours;

谢谢!我花了很短的时间才理解您在做什么,但据我所知,从现在起它起作用了:)我已经在这个问题上坐了好几天,没有看到任何解决方案……阅读文档会为您节省很多时间:)。OpenCV附带的示例代码也很棒。
vector<vector<Point> > contours;
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;
}