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);
您将需要添加一些依赖项,但这是最简单也是我首选的方法。
我目前正在使用 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);
您将需要添加一些依赖项,但这是最简单也是我首选的方法。