我有一個電視採集卡,其饋送作爲YUV格式進入。我已經在這裏看到類似於這個問題的其他帖子,並試圖嘗試所有可能的方法,但他們都沒有提供清晰的圖像。目前最好的結果是OpenCV cvCvtColor(scr, dst, CV_YUV2BGR)
函數調用。在OpenCV中將YUV轉換爲BGR或RGB
我目前還沒有意識到YUV格式,說實話讓我有點困惑,因爲它看起來像存儲4個通道,但只有3個?我已經包含了捕捉卡中的圖像,希望有人能夠理解我可以用來填補空白的事情。
進料通過的DeckLink強度臨卡進來,並在C++應用程序被訪問中在Windows 7環境中使用的OpenCV。
更新
我已經看過有關此信息的維基百科文章,並試圖用公式我的應用程序。下面是從它接收到的輸出的代碼塊。任何意見是極大的讚賞。
BYTE* pData;
videoFrame->GetBytes((void**)&pData);
m_nFrames++;
printf("Num Frames executed: %d\n", m_nFrames);
for(int i = 0; i < 1280 * 720 * 3; i=i+3)
{
m_RGB->imageData[i] = pData[i] + pData[i+2]*((1 - 0.299)/0.615);
m_RGB->imageData[i+1] = pData[i] - pData[i+1]*((0.114*(1-0.114))/(0.436*0.587)) - pData[i+2]*((0.299*(1 - 0.299))/(0.615*0.587));
m_RGB->imageData[i+2] = pData[i] + pData[i+1]*((1 - 0.114)/0.436);
}
「我目前尚不知情的YUV格式」 - >維基百科。閱讀有關它:http://en.wikipedia.org/wiki/YUV#Conversion_to.2Ffrom_RGB – NickLH
感謝您鏈接該文章,但我認爲我將與ay,u,v和y1一起工作,並且使用這些變量來產生RGB等價物?我也必須創建4個不同的數組來獲取每個單獨的值集合,以將它們合併到一起? – Seb
由於RGB中有3個顏色分量,因此只需要3個陣列。但是,你基本上需要分別計算顏色分量並將其存儲在某個地方。 – NickLH