opencv中RGB转YCbCr

标签: dst
13110人阅读 评论(4) 收藏 举报
分类:
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);

这里注意转出来的图像要是直接显示会发现Cb,Cr空间并非彩色图,原因是申请的y,cb,cr都是单通道的。这时只要将其转换到RGB分量上即可得到彩色图像。

比如这里我做了一个彩色图像对比度增强

http://blog.csdn.net/abcjennifer/article/details/7428737

6
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7689770次
    • 积分:51868
    • 等级:
    • 排名:第55名
    • 原创:484篇
    • 转载:36篇
    • 译文:1篇
    • 评论:4677条
    博主描述
    百度深度学习实验室RD,关注计算机视觉,机器学习,算法研究,人工智能, 移动互联网等学科和产业,希望结识更多同道中人。
    新浪微博:Rachel____Zhang

    文章分类
    最新评论