2010-03-07 2 views
6

Я пытаюсь создать настольное приложение C# (с оберткой Emgu CV), которое захватывает канал из камеры, обнаруживает края в канале, а затем отображает исходный канал (цветной) с краями - так несколько комбинированных цветных кормов и краев. Я успешно получаю канал с камеры. Я также обнаруживаю края в фиде, используя метод Canny. Проблема заключается в том, что, когда исходный канал имеет цвет, обнаружение краев выполняется в оттенках серого (черный фон, белые края). Я хотел бы знать, как «объединить» цветную ленту с лентой подачи для вывода объединенного фида.Как слить обнаруженные ребра в захват цвета в Emgu CV

Я пробовал метод Copy в Emgu CV, но он выводит черный фон и правильно окрашенные края (например, если я держу красный куб перед камерой, края вокруг куба окрашены в красный цвет) ,

Любая помощь очень ценится.

ответ

6

ОК, после небольшого поворота я нашел решение. Трюк состоит в том, чтобы использовать функцию «И» в результате инвертированного эффекта «Канни» и подачи цвета. Вот моя функция, которая работает с Application.Idle:

private void processFunction(object sender, EventArgs e) { 
     Image<Bgr, Byte> frame = c0.QueryFrame(); 
     Image<Gray, Byte> grayscale = frame.Convert<Gray, Byte>(); 
     grayscale = grayscale.Canny(new Gray(0), new Gray(255)).Not(); //invert with Not() 
     frame = frame.And(grayscale.Convert<Bgr, Byte>(), grayscale); //And function in action 
     imageBox1.Image = frame; 

    } 
Смежные вопросы