Преобразование в оттенки серого с использованием emguCV в C # - PullRequest
10 голосов
/ 01 июня 2010

Я новичок в EmguCV. Я хочу преобразовать изображение RGB в оттенки серого. Для конвертации я использовал код

Image<Gray,byte> grayImage = ColordImage.Convert<Gray, byte>();

Теперь, когда я компилирую этот код в C #, он не выдает ошибок, но когда я запускаю его, то через несколько секунд он дает мне исключение в этой строке кода, что этот тип преобразования не поддерживается OpenCV. Теперь любой может помочь мне решить эту проблему.

С уважением Амаль

Ответы [ 4 ]

13 голосов
/ 28 июня 2010

Это может зависеть от типа цвета ColordImage.

Например, это работает:

Capture cap = new Capture(1);
Image <Bgr,Byte> ColordImage = cap.QueryFrame();
Image <Gray,Byte> grayImage = ColordImage.Convert<Gray, Byte>();
imageBox1.Image = grayImage;

Если бы вы могли предоставить больше кода, это могло бы стать более очевиднымчто происходит.

5 голосов
/ 04 августа 2012

Вы должны вставить opencv_imgproc220.dll (если вы используете emgu cv 2.2.1.1150) в папку вашего проекта bin / debug.

5 голосов
/ 12 декабря 2010

В качестве альтернативы, если вы не хотите использовать Convert (например, в случае, если ваш ColoredImage - это какой-то другой тип данных, например IntPtr), доступно множество конструкторов, таких как:

Image<Gray, byte> grayFrame = new Image<Gray, byte>(width, height, stride, imageData);

Вот полный список:
http://www.emgu.com/wiki/files/2.1.0.0/html/cb45d54d-ebce-44b6-0352-3e1105c0862a.htm

Есть также еще несколько примеров (включая использование Convert) в emgu Wiki: http://www.emgu.com/wiki/index.php/Working_with_Images

4 голосов
/ 02 сентября 2014

Один простой способ - передать BitMap цветного изображения в конструктор;

Image<Bgr, byte> inputImage = //your original bgr image
Image<Gray, Byte> result = new Image<Gray,byte>(inputImage.Bitmap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...