【问题标题】:OpenCV Fill Holes in Binary Mat for Multiple Objects [duplicate]OpenCV为多个对象填充二进制垫中的孔[重复]
【发布时间】:2016-06-24 03:03:05
【问题描述】:

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

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(binaryMat, contours, -1, Scalar(255), CV_FILLED);
  • 成功了,谢谢!

标签: c++ opencv image-processing


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-05-06
    • 2021-08-11
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多