emgucv - EmguCV - 创建后垫不为空
问题描述
我目前正在使用 EmguCV,我需要空垫。但显然,当我创建它时,新的 Mat 有时会有一些我不想要的随机值。
我正在这样创建它:
Mat mask =new Mat(mainImg.Size,Emgu.CV.CvEnum.DepthType.Cv8U,1);
它应该是全黑的,但正如你所看到的,有一些垃圾让我在阅读垫子时遇到了麻烦。
有谁知道为什么会这样?也许有一个聪明的方法来清除垫子?
提前致谢!
解决方案
要创建一个空的垫子,只需使用下面的代码。
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);
您将需要添加一些依赖项,但这是最简单也是我首选的方法。
推荐阅读
- java - 为什么表格不会显示在本地主机(jsp 文件)中?
- javascript - 如何使用 jquery 将签入和签出时间数据保存在 mysql 中?
- python - 如何将多个转换应用于 Python 字典中的同一个键
- r - html输出显示每个函数的描述
- javascript - jQuery购物车数量更新按钮?
- node.js - 如何从 NodeJS 管道传输到 NodeJS?
- sql - 在 ASP.NET MVC 中更新表问题
- python - 使用 tabula 和 python 读取 pdf 文件时数据丢失
- php - 为什么即使我更改为数字,laravel 仍然验证电子邮件?
- r - CVXR 矩阵与向量的元素乘法