使用OpenCV在二进制图像中删除细线

时间:2014-07-21 07:43:57

标签: opencv imaging

我目前正在使用OpenCV来检测二进制图像中的斑点。我想在不改变大物体的情况下擦除小线条。

以下是一个示例:原始图片是

Original image

我想将其转换为以下

Transformed image

“打开”不起作用,因为在应用时,三角形的边缘被切掉了。是否还有其他方法可以删除线条,而不会丢失大三角形的信息?

1 个答案:

答案 0 :(得分:3)

使用Erosion消除此类噪音,

代码看起来像,

 Mat src;//load source
 Mat dst;//destination image
 Mat element = getStructuringElement(  MORPH_RECT,Size(5,5), Point( -1, -1 ) ); // kernel performing drode 
 erode( src, dst, element );

修改

在这里添加@Bull评论作为更合适的方法,建议erosion followed by dilation will get you very close to what you want

enter image description here