OpenCV填充洞二进制垫为多个对象

OpenCV Fill Holes in Binary Mat for Multiple Objects

本文关键字:对象 填充 二进制 OpenCV      更新时间:2023-10-16

我有在二进制阈值矩阵中显示为白色晕的对象。我用下面的代码填充白色的光晕,这样我就可以在矩阵中有实心的白色圆圈了:

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);
  }
}

如果我在相机馈送中只有一个对象,则此操作有效。然而,对于多个相同的物体,它不会对任何物体进行填充,除非我从场景中删除除一个物体外的所有物体。我如何修复代码,使每个对象被填充为一个白色的实心圆?

drawContours方法循环通过所有轮廓吗?控件基本上是作为链表类型给出的,必须通过调用while(contours!=null)来循环获取它们。.…contours = contours. vnext;//或HNext取决于你的代码