我目前在使用OpenCV来检测二进制图像中的斑点。我想删除小线条,而不改变大对象。
以下是一个例子:原始图像为: 我想将其转换为以下图像: “Opening”方法不起作用,因为应用它时三角形的边缘被切断了。是否有其他方法可以去除线条,而不丢失大三角形的信息?
以下是一个例子:原始图像为: 我想将其转换为以下图像: “Opening”方法不起作用,因为应用它时三角形的边缘被切断了。是否有其他方法可以去除线条,而不丢失大三角形的信息?
使用腐蚀算法来去除这种噪声,
代码如下:
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的评论,因为它是更合适的方法,建议使用腐蚀后再膨胀可以让你接近你想要的结果
。