2014-02-19 28 views
0

我有一個位圖作爲源;如何在C#中使用Emgu顯示YCbCr圖像?

我創建了一個Emgu圖像與Image<Bgr,Byte> img = new Image<Bgr,Byte>(bmp);

我它轉換爲使用Image<Ycc,Byte> YCB = img.Convert<Ycc,Byte>();

我拖着從工具箱中imagebox一個YCbCr圖像,並用YCB ----->imagebox1.Image=YCB;

分配它

但結果顯示RGB格式的圖像就像源位圖

我不明白哪裏出錯了

有人能給我一些線索嗎?

回答

0

您是否對YCB做過任何改動?如果你只是簡單地顯示它,那麼它看起來和原來的一樣。

如果您在運行程序並選擇屬性時右鍵單擊您的圖像框,它會告訴您圖像的類型並向您顯示YCB圖像中保存的數據,這應該與您的原始圖像不同。或者只顯示1個圖像矩陣的通道,這樣BGR就會顯示藍色,這顯然會顯示爲單色灰度圖像。現在,YCB再次顯示Luma通道,這將顯示爲單色灰度圖像。由於亮度代表所有3種色譜的亮度,因此您會注意到它們之間的輕微變化。

  CvInvoke.cvShowImage("Blue", img [0]); 
      CvInvoke.cvShowImage("Luma", YCB[0]); 

如果你想看到一個更大的差異乘以亮度2,你有一個完全不同的圖像。

  YCB[0] *= 2; 
      CvInvoke.cvShowImage("Luma Change", YCB); 

的CvInvoke.cvShowImage()方法對於調試你的代碼,看到你的代碼是一步在做圖像一步一個偉大的工具。

他人的好處YCC是YCbCr色彩空間:http://en.wikipedia.org/wiki/YCbCr

乾杯,

克里斯

+0

的cvInvoke確實幫了我很多,謝謝。 – APU