我有一个几乎不变的线条的图像,我使用algorythm与形态操作来清除它们的图像。事情是,形态开放或闭合将线与图像的边缘合并,而不仅仅是融化邻居轮廓。我只需要通过形态学操作融合的邻居轮廓,并避免这条线与边缘融合,因为后来我无法从图像中清除该线的合并和平。即使我反转图像和变形,问题仍然存在。操作(图像像素从黑到白,白到黑,而不是打开我使用关闭)。形态学操作合并线条与图片的边缘
如何停止?
我用这个操作合并邻居轮廓:
Mat morphKernelClose = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new org.opencv.core.Size(25, 25));
Imgproc.morphologyEx(src, src, Imgproc.MORPH_CLOSE, morphKernelClose);
简单的Canny图像:
:
使用MORPH_CLOSE后图片
此错误不允许我完全清除线(那些合并部分是左)通过使用第二形态学运算,相对的第一至使用。
morphologyEx的C++版本具有处理边界的参数。不确定它们是否也存在于java(?)版本中。 – Micka
谢谢。在Java中有一个函数超载:public static void morphologyEx(Mat src,Mat dst,int op,Mat kernel,Point anchor,int iterations,int borderType,Scalar borderValue)',其中** ** borderType - 像素外插方法。有关详细信息,请参阅“borderInterpolate”。**“和”** borderValue - 边界常量时的边界值。默认值有特殊含义。请参阅“createMorphologyFilter”以了解详细信息。用适当的参数操纵边界合并?我无法找到任何使用和解释此用法的来源。 –
我想是的。去尝试一下。将其设置为border_constant并将值设置为0. – Micka