EmguCV - 创建后垫子不为空

EmguCV - Mat is not empty after creating

我目前正在使用 EmguCV,我需要空垫子。但显然当我创建它时,新 Mat 有时会有一些我不想要的随机值。

我是这样创建的:

Mat mask =new Mat(mainImg.Size,Emgu.CV.CvEnum.DepthType.Cv8U,1);

当我显示 'mask' 时,它看起来像这样:

它应该是全黑的,但如您所见,有一些垃圾让我无法阅读垫子。

有谁知道为什么会这样吗?也许有一个聪明的方法来清除垫子?

提前致谢!

要创建一个空垫子,只需使用下面的代码。

Mat img = new Mat();

如果你想让它成为一个特定的尺寸,使用下面的代码。在上面的问题中,您选择了 8U 的深度类型,这可能会导致图像质量低下。在这里,我选择了 32F 的深度类型,这应该会提高新蒙版图像的质量。我还添加了 3 个通道而不是 1 个,因此您可以完全访问 Bgr 颜色 space。

Mat mask = new Mat(500, 500, DepthType.Cv32F, 3);

Mat 对象很棒,因为您不需要预先指定图像的大小或深度。同理,如果你想使用图片代替,你可以使用下面的代码。

Image<Bgr, byte> img = new Image<Bgr, byte>(500, 500);

您将需要添加一些依赖项,但这是最简单也是我首选的方法。