求救:YUV转为灰度图的功能写出来了,就是调用的时候无法写入到输出缓存pGrayBuf中.在线等~~~~~~~
cubit 2007-08-08 03:56:42 void YUVToGray (LPBYTE yuvBuf,UINT nWidth,UINT nHeight,LPBYTE pGrayBuf) {
int bmp_wd = nWidth;
int bmp_ht = nHeight;
LPBYTE yBuf , uBuf , vBuf; // Y,U,V分量
short int r, c,R, G, B, y, u, v;
yBuf = yuvBuf;
uBuf = yuvBuf + bmp_wd * bmp_ht;
vBuf = yuvBuf + bmp_wd * bmp_ht * 3/2;
long iIndex=0;
for (r = 0; r < bmp_ht; r++) {
for (c = 0; c < bmp_wd; c++) {
y = yBuf [c];
u = uBuf [c >> 1] - 128;
v = vBuf [c >> 1] - 128;
R = y + 1.375 * v;
G = y - 0.34375 * u - 0.703125 * v;
B = y + 1.734375 * u;
R = max (0, min (255, R));
G = max (0, min (255, G));
B = max (0, min (255, B));
short int gray = 0.299*R + 0.587*G + 0.114*B;
pGrayBuf[iIndex+c+0]=gray;
pGrayBuf[iIndex+c+1]=gray;
pGrayBuf[iIndex+c+2]=gray;
}
yBuf += bmp_wd;
uBuf += bmp_wd/2;
vBuf += bmp_wd/2;
iIndex+=bmp_wd;
}
}