首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从BGR到YCrCb再到BGR的转换

从BGR到YCrCb再到BGR的转换
EN

Stack Overflow用户
提问于 2012-04-04 20:37:54
回答 1查看 7.4K关注 0票数 2

我曾尝试将BGR转换为YCrCb以增加亮度,并将其转换回BGR。

cvSplit(亮度,y,cr,cb,0);<<拆分不需要按顺序进行,对吧?

...do关于亮度分量的一些内容

cvMerge(temp_y,cr,cb,0,luma);<<亮度,Cr和Cb的正确顺序是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-04 22:47:09

要在不同的色彩空间之间转换,您需要使用cvtColor。要从BGR到YCC,您应该传递参数CV_BGR2YCrCb (返回的参数是CV_YCrCb2BGR)。正确的用法是:

代码语言:javascript
复制
cvtColor(src, dest, CV_BGR2YCrCb)

其中src是您的源帧,dest将是您的处理帧(您可以将src放在这里,以便它进行适当的更改)。

cvSplit不是您所需要的,因为它只是将一个多通道数组拆分为几个单通道数组(其组件)。因此,如果你有一个BGR帧的视频,cvSplit可以给你单独的B,G,R通道。

如果您想单独处理Y通道,可以转换颜色空间,然后拆分,然后再合并回来,如下所示:

代码语言:javascript
复制
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)

如果只想增加图像的亮度,一种更简单的方法(不需要使用亮度)是为每个通道添加一个缩放器:

代码语言:javascript
复制
cvAddS(frame, cvScalar(30,30,30), frame)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10011248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档