【问题标题】:Opencv: Get segments sizes in image and remove small segmentsOpencv:获取图像中的段大小并删除小段
【发布时间】:2016-03-11 20:12:07
【问题描述】:

我是 openCV 的新手(在 Android 上),找不到对二进制图像进行基本分割并获取片段(带有黑色像素)大小的方法,然后从给定阈值的图像中删除小片段。请注意,我不需要只找到轮廓,我需要获得完全连接的像素(段)大小。之后过滤小的。

示例图片如下

binary image

【问题讨论】:

  • 那里的 findContours 有什么问题?
  • 1.它只画线我不确定用这些参数找到轮廓 Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_NONE 是否获取段的所有像素数? 2. 似乎它无法过滤小片段,或者至少无法将片段从一张图像复制到另一张图像。
  • 如果你能给我一个非常有用的例子
  • 在 findContours 之后尝试函数 contourArea() ;)
  • 我得到了一些轮廓区域的值,但我不确定它们是否正确,因为在带有轮廓的图像上我看到许多未闭合的轮廓

标签: android opencv image-processing image-segmentation


【解决方案1】:

我用 findContours 解决了这个问题(感谢@Micka 推动我)。

这里是我需要的部分的代码示例。 1.我做了二进制图像的反转,因为我需要得到黑色段
2. 分割:



    Imgproc.findContours(mat, contours, mHierarchy, Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_NONE);

  1. 删除小段

    每个 = 轮廓.iterator(); 而(每个.hasNext()){ MatOfPoint 包装器 = each.next(); 双区域 = Imgproc.contourArea(wrapper); 如果(面积

4. 用分段绘制新图像



    Imgproc.drawContours(newImg, contours, -1, new Scalar(0, 0, 0), 1);
    Imgproc.fillPoly(newImg, contours, new Scalar(0, 0, 0));

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多