CvMat cvRGB2YCbCr(CvMat* src)
{
CvMat dst;
cvInitMatHeader(&dst,3,1,CV_32F,zero);
double B=cvmGet(src,0,0);
double G=cvmGet(src,1,0);
double R=cvmGet(src,2,0);
double y = (int)( 0.299 * R + 0.587 * G + 0.114 * B);
double cb = (int)(-0.16874 * R - 0.33126 * G + 0.50000 * B);
double cr = (int)( 0.50000 * R - 0.41869 * G - 0.08131 * B);
cvmSet(&dst,1,0,cb);
cvmSet(&dst,0,0,y);
cvmSet(&dst,2,0,cr);
return dst;
}
或者使用opencv内部提供函数
ycb=cvCreateImage(cvGetSize(src),8,3);
cvCvtColor(src,ycb,CV_BGR2YCrCb);
y=cvCreateImage(cvGetSize(src),8,1);
cr=cvCreateImage(cvGetSize(src),8,1);
cb=cvCreateImage(cvGetSize(src),8,1);
cvSplit(ycb,y,cr,cb,0);
这