gpt4 book ai didi

opencv - BGR 到 YCrCb 和返回 BGR 之间的转换

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:57 24 4
gpt4 key购买 nike

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

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

...对亮度分量做点什么

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

最佳答案

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

cvtColor(src, dest, CV_BGR2YCrCb)

src 是你的源帧,dest 是你处理过的帧(你可以把 src 放在这里让它做原地改变)。

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

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

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)

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

cvAddS(frame, cvScalar(30,30,30), frame)

关于opencv - BGR 到 YCrCb 和返回 BGR 之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10011248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com