Преобразование в оттенки серого с использованием emguCV в C#

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

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

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

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


person Amal    schedule 01.06.2010    source источник
comment
Ответ Тома Райта сработал для меня. Если это сработало для вас, пожалуйста, примите ответ.   -  person Chad    schedule 30.09.2016


Ответы (4)


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

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

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

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

person Tom Wright    schedule 28.06.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: http://www.emgu.com/wiki/index.php/Working_with_Images

person glenneroo    schedule 12.12.2010

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

person Abu Yousuf    schedule 03.08.2012
comment
Этот ответ выглядит глупо, но это правильный ответ. Я проверил ColordImage.Convert() в ILSpy, функция использует Image.ConvertColor(), который содержит блок try/catch, который ловит все, включая ошибки загрузки dll. - person Markos; 10.11.2012

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

Image<Bgr, byte> inputImage = //your original bgr image
Image<Gray, Byte> result = new Image<Gray,byte>(inputImage.Bitmap);
person vincent mathew    schedule 02.09.2014