OpenCV在间隙阈值内合并掩膜部分

问题描述:

我正在编写使用mog2算法从输入中提取背景的实时视频处理代码,然后使用形态滤波器对其进行平滑处理。OpenCV在间隙阈值内合并掩膜部分

问题是,有时在一个对象的掩码中存在间隙。我认为我可以用某种算法修复它以填补阈值内的空白,但OpenCV中是否有像这样的算法,还是我必须自己编写它?

左图是实际的面具,右边那个是我的涂料制造预期的结果:

+0

您可以指定一种编程语言吗?你能提供一些能够表达问题的图像,以及期望的结果吗? – Miki

+0

完成。添加图像的问题。 –

+0

我感觉它是因为影子。捕捉后首先尝试图像模糊。或尝试使发光值null在一定程度上这将解决我猜.. .. – Arjun

关于编辑二进制掩码是一个二元形态操作:您希望您的二进制掩码的closing

enter image description here

约形态学闭信息是here(包括图像)

OpenCV Java documentation(由我缩短)

public static void morphologyEx(Mat src,Mat dst,int op,Mat kernel)

执行先进的形态转换。

该功能可以使用 进行高级形态转换作为基本操作的侵蚀和膨胀。 [...]> 注:

使用用于形态学 开口morphologyEx功能和闭合操作的一个例子可以在 opencv_source_code /样品/ CPP/morphology2.cpp找到

  • 运算

MORPH_CLOSE - 闭合操作

MORPH_GRADIENT - 形态梯度

MORPH_TOPHAT - “大礼帽”

MORPH_BLACKHAT - “黑帽子”

我不知道有足够的了解的OpenCV的Java绑定,但它可能是非常相似的中提到的C++例子以上报价:

// Close the image in C++ 
cv::Mat element5(5,5,CV_8U,cv::Scalar(1)); # 5 by 5 element set at 1 
cv::Mat closed; 
cv::morphologyEx(image,closed,cv::MORPH_CLOSE,element5); 
+0

这或多或少是我所寻找的,并不总是理想的,但足以满足我的需求。 –