OpenCV在间隙阈值内合并掩膜部分
我正在编写使用mog2算法从输入中提取背景的实时视频处理代码,然后使用形态滤波器对其进行平滑处理。OpenCV在间隙阈值内合并掩膜部分
问题是,有时在一个对象的掩码中存在间隙。我认为我可以用某种算法修复它以填补阈值内的空白,但OpenCV中是否有像这样的算法,还是我必须自己编写它?
左图是实际的面具,右边那个是我的涂料制造预期的结果:
关于编辑二进制掩码是一个二元形态操作:您希望您的二进制掩码的closing
。
约形态学闭信息是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);
这或多或少是我所寻找的,并不总是理想的,但足以满足我的需求。 –
您可以指定一种编程语言吗?你能提供一些能够表达问题的图像,以及期望的结果吗? – Miki
完成。添加图像的问题。 –
我感觉它是因为影子。捕捉后首先尝试图像模糊。或尝试使发光值null在一定程度上这将解决我猜.. .. – Arjun