首页 > 解决方案 > EmguCV - 创建后垫不为空

问题描述

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

我正在这样创建它:

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

当我显示“面具”时,它看起来像这样: 在此处输入图像描述

它应该是全黑的,但正如你所看到的,有一些垃圾让我在阅读垫子时遇到了麻烦。

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

提前致谢!

标签: emgucvmat

解决方案


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

Mat img = new Mat();

如果要使其成为特定大小,请使用以下代码。在您上面的问题中,您选择了 8U 的深度类型,这可能会导致您的图像质量低下。这里我选择深度类型为 32F,这应该会增加新蒙版图像的质量。我还添加了 3 个通道而不是 1 个,因此您可以完全访问 Bgr 色彩空间。

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

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

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

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


推荐阅读