Opencv:获取图像中的段大小并删除小段
Opencv: Get segments sizes in image and remove small segments
我是 openCV 的新手(在 Android),找不到对二值图像进行基本分割并获取片段(黑色像素)大小,然后删除小片段的方法来自具有给定阈值的图像。请注意,我不需要只找到轮廓,我需要获得完全连接的像素(段)大小。之后过滤小的。
示例图片如下
我用 findContours 解决了它(感谢@Micka 推动我)。
这是我需要的部分的代码示例。
1.我做了二值图像的反演,因为我需要得到黑段
2.分割:
Imgproc.findContours(mat, contours, mHierarchy, Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_NONE);
删除小片段
</p>
<p>每个=contours.iterator();
而 (each.hasNext()) {
MatOfPoint 包装器 = each.next();
双区域 = Imgproc.contourArea(包装器);
如果(面积 <= 长度阈值){
each.remove();
}
}</p></li>
</ol>
<p>
4. 绘制新的图像段
Imgproc.drawContours(newImg, contours, -1, new Scalar(0, 0, 0), 1);
Imgproc.fillPoly(newImg, contours, new Scalar(0, 0, 0));
我是 openCV 的新手(在 Android),找不到对二值图像进行基本分割并获取片段(黑色像素)大小,然后删除小片段的方法来自具有给定阈值的图像。请注意,我不需要只找到轮廓,我需要获得完全连接的像素(段)大小。之后过滤小的。
示例图片如下
我用 findContours 解决了它(感谢@Micka 推动我)。
这是我需要的部分的代码示例。
1.我做了二值图像的反演,因为我需要得到黑段
2.分割:
Imgproc.findContours(mat, contours, mHierarchy, Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_NONE);
删除小片段
</p> <p>每个=contours.iterator(); 而 (each.hasNext()) { MatOfPoint 包装器 = each.next(); 双区域 = Imgproc.contourArea(包装器); 如果(面积 <= 长度阈值){ each.remove(); } }</p></li> </ol> <p>
4. 绘制新的图像段Imgproc.drawContours(newImg, contours, -1, new Scalar(0, 0, 0), 1); Imgproc.fillPoly(newImg, contours, new Scalar(0, 0, 0));