OpenCV填充多个对象的二进制垫孔

时间:2016-06-23 18:55:55

标签: c++ opencv image-processing

我的对象在二进制阈值矩阵中显示为白色晕圈。我制作了这个代码来填充白色光晕,所以我可以在矩阵中使用纯白色圆圈:

void processBinary(Mat& binaryMat) {
  Mat clone;
  binaryMat.copyTo(clone);
  vector<vector<Point>> contours;
  findContours(clone, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

  if (!contours.empty()) {
      drawContours(binaryMat, contours, 0, Scalar(255), CV_FILLED);
  }
}

如果相机Feed中只有一个对象,则此方法有效。但是,对于多个相同的对象,它不会对任何对象执行填充,除非我从场景中删除除了一个对象之外的所有对象。如何修复代码以使每个对象都填充为纯白色圆圈?

1 个答案:

答案 0 :(得分:-1)

drawContours方法是否循环遍历所有轮廓? 控件基本上是链接列表tyhat,必须循环以通过调用while来获取它们(contours!= null) .... contours = contours.VNext; //或HNext取决于您的代码。