2013-05-14 102 views
2

當我將圖像轉換爲YUVRGB當我嘗試打印像素時,無法獲得Y值。我得到一個值377,當我把它與整數我得到了255.因爲我認爲是不正確的。有沒有更好的方法或更正確的方法來打印YUV圖像像素的值。打印YUV圖像的像素值

其實我priting值(int)src.at<Vec3b>(j,i).val[0]= 255src.at<Vec3b>(j,i).val[0] = 377

而且關於這一點,在Y是RGB與根據需要注意的一些常數計算的組合。我實際上很困惑如何獲得Y的值。

回答

1

這是OpenCV的一個問題。對於uchar格式,OpenCV不能正常處理(縮放)YUV或HSV色彩空間。與Vec3b你有效的3通道uchar,範圍[0; 255]。

解決方案是使用另一種矩陣類型。用cv::Mat3f你有一個3通道浮點圖像。然後這些值將被cvtColor函數正確轉換。您可以通過分配從Mat3b獲得Mat3f。

使用較少內存的另一種解決方案可能是Mat3s和Mat3w類型(如果由cvtColor支持)。

+0

好吧,我看到了OpenCV的問題。 imread()默認是uchar我猜。所以你的意思是我從uchar類型的Mat3f轉換而來。我有沒有得到正確的。 – rish 2013-05-14 14:12:10

+1

是的,或者你只是做Mat3f輸入= imread(...),它的工作原理。但是,如果imread失敗(例如文件名錯誤),它將引發異常。 – ypnos 2013-05-14 14:27:38

+0

謝謝你的幫助。還有一個問題,就像你建議我使用Mat3f直接讀取圖像。它的作品,但是當我打印圖像它顯示所有白色但是當我做cvtColor時,它顯示對象很好。現在我的困惑是,當我讀爲Mat3f時,它將uchar轉換爲自動浮動。 – rish 2013-05-14 14:43:01