【问题标题】:EmguCV - Mat is not empty after creatingEmguCV - 创建后垫不为空
【发布时间】:2020-04-08 20:46:15
【问题描述】:

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

我是这样创建的:

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

当我显示“面具”时,它看起来像这样:

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

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

提前致谢!

【问题讨论】:

    标签: emgucv mat


    【解决方案1】:

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

    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);

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

    【讨论】:

    • 我想要一个具有图像大小的空 Mat 对象,因此当我在 Mat(我的蒙版)上绘制一些东西时,我可以在我的图像上使用此绘图的坐标。我不希望我的面具包含我的图像,我不能改用 Image 类。
    • 非常感谢!改变我的垫子的深度解决了这个问题!
    猜你喜欢
    • 2021-04-05
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    相关资源
    最近更新 更多