2010-03-07 115 views
6

我試圖製作一個C#桌面應用程序(使用Emgu CV包裝器),它捕獲來自相機的提要,檢測提要中的邊緣,然後顯示原始提要(有色)的邊緣 - 所以有點組合的彩色進料和邊緣。我成功地從相機獲取了Feed。我還使用Canny方法檢測Feed中的邊緣。問題是,儘管原始供稿是彩色的,但邊緣的檢測是在灰度(黑色背景,白色邊緣)中完成的。我想知道如何將彩色進紙與邊緣進給「合併」以輸出合併進給。如何將檢測到的邊緣合併爲Emgu CV中的顏色捕獲

我已經嘗試了Emgu CV中的複製方法,但它輸出黑色背景和正確着色的邊緣(例如,如果我在相機前面拿着一個紅色立方體,則立方體周圍的邊緣會被塗成紅色) 。

任何幫助非常感謝。

回答

6

好的,經過一點點修補,我找到了解決方案。訣竅是在反向Canny結果和顏色反饋上使用And函數。這是我的功能,與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; 

    }