我曾尝试将BGR转换为YCrCb以增加亮度,并将其转换回BGR。
cvSplit(亮度,y,cr,cb,0);<<拆分不需要按顺序进行,对吧?
...do关于亮度分量的一些内容
cvMerge(temp_y,cr,cb,0,luma);<<亮度,Cr和Cb的正确顺序是什么?
发布于 2012-04-04 22:47:09
要在不同的色彩空间之间转换,您需要使用cvtColor。要从BGR到YCC,您应该传递参数CV_BGR2YCrCb (返回的参数是CV_YCrCb2BGR)。正确的用法是:
cvtColor(src, dest, CV_BGR2YCrCb)其中src是您的源帧,dest将是您的处理帧(您可以将src放在这里,以便它进行适当的更改)。
cvSplit不是您所需要的,因为它只是将一个多通道数组拆分为几个单通道数组(其组件)。因此,如果你有一个BGR帧的视频,cvSplit可以给你单独的B,G,R通道。
如果您想单独处理Y通道,可以转换颜色空间,然后拆分,然后再合并回来,如下所示:
cvtColor(frame, frame, CV_BGR2YCrCb)
cvSplit(frame, Y, Cr, Cb, NULL)
#Process the Y channel here.
cvMerge(Y, Cr, Cb, NULL, frame)
cvtColor(frame, frame, CV_YCrCb2BGR)如果只想增加图像的亮度,一种更简单的方法(不需要使用亮度)是为每个通道添加一个缩放器:
cvAddS(frame, cvScalar(30,30,30), frame)https://stackoverflow.com/questions/10011248
复制相似问题