2013-07-01 215 views
0

我是我的攝像頭中的數據是yuv422。我想將這個yuv422存儲到一個cv :: Mat而不將其轉換爲RGB ...這可能嗎?Opencv在cv中存儲Yuyv(YCrCb):: Mat

謝謝。

+4

如果您可以直接訪問框架,則可以使用* data成員在Mat中轉換數據。 'cv :: Mat'是泛型類型,它不是嚴格的RGB。 – jnovacho

回答

2

由於色度抽樣,它可能會,如果你解壓YUYV數據爲YUV矩陣(8位數據的3個通道)要簡單一些,然後用cv::inRange等執行您的濾波您只需爲每個Y內插U和V採樣。另一種替代方法是將矩陣視爲4通道8位數據,然後在濾波結果中將兩個Y樣本的結果組合起來通道。

2

是的,只需創建一個3通道矩陣。請大家看看basic Mat tutorial

+0

從本質上講,我想要做的是在yuv422數據上使用'cv :: inRange';然而,由於數據是422,我不太確定我能做到這一點。此外,我不認爲我需要3聲道,而是2聲道,因爲數據存儲爲Y0U Y1V。 –

+0

然後創建一個雙通道墊。該文檔對於如何使用Mat對象非常有用。 – Nallath

+0

是的,我做了......但後來我不能使用'cv :: inRange'函數,因爲每個奇數的nybble代表'U'或'V',每個偶數代表'Y'。你知道是否有方法來存儲圖像,以便我可以使用opencv函數(如'cv :: inRange')?我想知道是否有某種方式可以告訴opencv數據是yuv422,因爲如果它不知道,所有的方法都不起作用。 –