Как применять cvsobel + emgucv - PullRequest
0 голосов
/ 11 ноября 2011

У меня проблемы с использованием функции cvsobel.Я читал, что cvsobel увеличивает глубину изображения с 8 бит до 16 бит ...

Может кто-нибудь помочь мне выяснить, как я могу уменьшить его до 8 бит ...

Мой код:

Image<Gray, Byte> grayImage = TestImage.Convert<Gray, Byte>().PyrDown().PyrUp(); ;
Image<Gray, Byte> Dest = new Image<Gray, Byte>(grayImage.Size);
Image<Gray, Byte> SobelHorizontal = new Image<Gray, Byte>(grayImage.Size);
CvInvoke.cvCanny(grayImage, Dest, 10, 60, 3);
CvInvoke.cvSobel(Dest, SobelHorizontal, 1, 0, 3); // introduces exception

, где TestImage - это цветное изображение, которое я беру у пользователя.

Мне кажется, что здесь проблема с объявлением SobelHorizontal ... Какя даю здесь 16-битную глубину и заставляю функцию работать ..

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011

Что ж, EMGU на самом деле имеет простые и хитрые реализации в C #:

 //grayImage.Canny(Gray thresh, Gray threshelinking)
 grayImage.Canny(new Gray(10), new Gray(60));
 //grayImage.Sobel(int xorder, intyorder, int aptureSize)
 grayImage.Sobel(1, 0, 3);

Это должно делать так, как вы хотите, без трудностей, с которыми вы сталкиваетесь, однако, как упомянуто vasile, вы можете объявить тип данных своего изображения, как вам нравится

Image<Gray,short> Image<Gray,double>, or Image<Gray,float>.

Приветствия,

Крис

0 голосов
/ 27 июля 2016

Вы также можете установить его напрямую.

Пример:

Image<Emgu.CV.Structure.Gray, byte> objImagemTemplate = new Image<Emgu.CV.Structure.Gray, byte>(objBitmapTemplate); // Image A
objImagemTemplate = (objImagemTemplate.Canny(new Gray(10), new Gray(60)).Sobel(1, 0, 1)).Convert<Gray, Byte>();
0 голосов
/ 11 ноября 2011

Определите SobelHoriz как

Image<Gray, short>

, или как в C # будет названо 16-битное целое число.Затем используйте функцию image.convertTo (), чтобы вернуть его в серый цвет:

Image<gray, byte> sobelDisplay;
sobelHoriz.convertTo(sobelDisplay);

Я не знаю, как вы вызываете его в C #.В c ++ объект изображения имеет элемент convertTo ()

...