EmguCV - Мат не пуст после создания - PullRequest
1 голос
/ 08 апреля 2020

Я сейчас работаю с EmguCV и мне нужен пустой Mat. Но, по-видимому, когда я создаю его, новый Mat иногда имеет некоторые случайные значения, которые мне не нужны.

Я создаю это так:

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

И когда я отображаю ' маска 'выглядит так: enter image description here

Он должен быть полностью черным, но, как вы можете видеть, есть некоторая тра sh, которая вызывает у меня проблемы при чтении мата.

Кто-нибудь знает, почему это так? Может быть, есть умный способ очистить коврик?

Заранее спасибо!

1 Ответ

1 голос
/ 09 апреля 2020

Чтобы создать пустой коврик, просто используйте код ниже.

Mat img = new Mat();

Если вы хотите, чтобы это был определенный c размер, используйте следующий код. В своем вопросе выше вы выбирали тип глубины 8U, который может способствовать низкому качеству изображения. Здесь я выбираю тип глубины 32F, который должен повысить качество изображения новой маски. Я также добавил 3 канала вместо 1, чтобы вы могли иметь полный доступ к цветовому пространству Bgr.

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

Матовые объекты хороши тем, что вам не нужно указывать размер или глубина изображения заранее. Одновременно, если вы хотите использовать вместо этого изображение, вы можете использовать код ниже.

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

Вам нужно будет добавить некоторые зависимости, но это самый простой и мой предпочтительный способ делать это.

...