c# - 背景减法 EMGU CV 后保留一些背景

标签 c# opencv background emgucv subtraction

我是 EmguCV 图像处理的新手,正在尝试不同的背景减法方法。我遇到了absdiff方法并尝试了一下但是经过一系列处理后,对象的某些部分似乎是透明的并且可以看到它后面的背景,Background subtraction sample

这是我处理图像的代码部分

            img = _capture.QueryFrame().ToImage<Bgr, Byte>();
            Mat smoothedFrame = new Mat();
            CvInvoke.GaussianBlur(img, smoothedFrame, new Size(3, 3), 1);
            img3 = img2gray.AbsDiff(smoothedFrame.ToImage<Gray, Byte>());//.Convert<Gray, Byte>());
            img3 = img3.ThresholdBinary(new Gray(60), new Gray(255));
            IbOriginal.Image = img;
            IbProcessed.Image = img3;

如何删除上图中的那些“空白或空心”空间。任何帮助将不胜感激

最佳答案

我猜您想创建一个仅包含卡车像素的 mask 。您可能已经用

去除了空心区域中的像素
ThresholdBinary(new Gray(60), new Gray(255));

降低下限阈值可能是您所需要的,但它也可能包含一些背景噪音。您始终可以首先使用更高的阈值(您在此处所做的)识别卡车的位置,然后识别 ROI 中先前图像的 ThresholdBinary。

ThresholdBinary(new Gray(10), new Gray(255));

或者你可以尝试CvInvoke.FloodFill

关于c# - 背景减法 EMGU CV 后保留一些背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35943889/

相关文章:

c# - 需要哪些配置才能使 NodaTime.Instant 在 AspNetCore 中用作查询/路径/表单参数?

c# - 将值从 ASP.NET/C# 传递给用于谷歌地图应用程序的 javascript 代码

html - 具有重叠 slider /旋转木马和 Bootstrap 导航的两个背景

c# - 在 C# 中显示最小化应用程序窗口的计数

opencv - 我可以在微 Controller 上使用眼睛检测 opencv 代码吗?

python - 使用 Pytesseract OCR 对具有表结构的图像进行错误字符识别

android - 我的 Android 应用程序突然关闭

css - 需要空 div 的背景图像以在所有屏幕尺寸上以适当的比例显示

time - 根据时间改变背景 - Objective C

c# - 是否可以使用 Breeze js 进行 "where <property> in <set>"查询