我有一個問題,將從YUV格式的相機捕獲的圖像轉換爲RGB格式。Blackmagic frame:從yuv轉換爲RGB在openCV中使用
這是用來做什麼的功能如下:
int uwidth = 1920;
int uheight= 1080;
int i = 0,j = 0, r = 0, g = 0, b = 0;
typedef unsigned char BYTE;
IplImage* m_RGB = cvCreateImage(cvSize(uwidth, uheight), IPL_DEPTH_8U, 3);
unsigned char* pData = (unsigned char *) frameBytes;
for(i = 0, j=0; i < uwidth * uheight*3 ; i+=6, j+=4)
{
unsigned char u = pData[j];
unsigned char y = pData[j+1];
unsigned char v = pData[j+2];
b = 1.0*y + 8 + 1.402*(v-128);
g = 1.0*y - 0.34413*(u-128) - 0.71414*(v-128);
r = 1.0*y + 1.772*(u-128);
if(r>255) r =255;
if(g>255) g =255;
if(b>255) b =255;
if(r<0) r =0;
if(g<0) g =0;
if(b<0) b =0;
m_RGB->imageData[i] = (BYTE)(r*220/256);
m_RGB->imageData[i+1] = (BYTE)(g*220/256);
m_RGB->imageData[i+2] =(BYTE)(b*220/256);
}
cvNamedWindow("ck", CV_WINDOW_AUTOSIZE);
cvShowImage("ck", m_RGB);
cvReleaseImage(&m_RGB);
的問題是,我們在窗口不是一個而是兩個圖像我的屏幕上,而且我們有很好的顏色,但不好比例。
有沒有人有關於這些問題的想法?
編輯:Image output
http://stackoverflow.com/questions/8042563/correct-yuv422-to-rgb-conversion/8616223#8616223這個想法是,一些YUV格式不同於你所期望的。找到你正在使用的確切的一個,並相應地實現你的算法 – Sam