QImage可以由RGB32的数据构造,估计你要自己写yuv到RGB的函数了,我在论坛上找了个yuv到rgb的函数,不知道好不好用,你试试吧:
void yuv420_toRGB(int width, int height, unsigned char *buf,unsigned char* RGBBuffer)
{
unsigned char *YBuffer = buf;
unsigned char *UBuffer = buf + height * width;
unsigned char *VBuffer = buf + (int)(height*width*1.25);
int Y, U, V, R, G, B;
int writePos = 0;
int i = 0, j = 0;
int k = 0;
for(i=0; i<height; i++)
{
for(j=0; j<width; j++)
{
Y = YBuffer[j]-16;
k = (int)(j/2);
U = UBuffer[k]-128;
V = VBuffer[k]-128;
R = ((298*Y + 409*V + 128)>>8);
G = ((298*Y - 100*U - 208*V + 128)>>8);
B = ((298*Y + 516*U + 128)>>8);
RGBBuffer[writePos++] = (B<0) ? 0 : ((B>255) ? 255 : B);
RGBBuffer[writePos++] = (G<0) ? 0 : ((G>255) ? 255 : G);
RGBBuffer[writePos++] = (R<0) ? 0 : ((R>255) ? 255 : R);
RGBBuffer[writePos++] = 0xff;
}
YBuffer += width;
if(i%2==1)
{
UBuffer += width/2;
VBuffer += width/2;
}
}
}