【发布时间】:2016-01-13 00:23:25
【问题描述】:
我想将 YCrCb 拆分为 Y、Cr 和 Cb 通道。
代码运行良好,但是当我为每个 Y、Cr、Cb 显示带有 imshow("Y", y) 的通道时,所有通道看起来都是灰色的。
只有 Y 通道必须是灰色的,其他的应该是彩色的。我对吗?或者代码有什么问题?
Mat RGBImage;
RGBImage = imread("xx.jpg");
cvtColor(RGBImage, YCrCb, CV_RGB2YCrCb);
vector<Mat> ycc_planes;
split(YCrCb, ycc_planes);
Mat y = ycc_planes[0];
Mat Cr = ycc_planes[1];
Mat Cb = ycc_planes[2];
我的最终目标是将均值滤波器应用于图像的 Y 分量,然后通过合并其他分量(Cr 和 Cb)将其更改回 RGB。最后,我将获得原始 RGB 图像的模糊版本。然而,我的平均滤波器总是返回灰色模糊图像。我虽然可能是因为我的 Cr,Cb 组件是灰色的。
【问题讨论】:
-
您将一个 3 通道图像拆分为 3 个 1 通道图像。 1通道图像是灰度的,将显示为gray-sh。它们的像素值实际上是颜色信息这一事实无关紧要,它们仍然是灰度图像。所以,你的代码没问题,只是你的解释不正确。
-
我应该在我的代码中添加什么以使它们变得丰富多彩? @三木
-
cvtColor(RGBImage, YCrCb, CV_BGR2YCrCb);或许更好 -
哦,也许我明白了……你的意思是this?这只是一个颜色图,一种视觉效果。
-
是的,实际上我将均值滤波器应用于图像的 Y 分量,我需要通过合并其他分量 (Cr 和 Cb) 将其更改回 RGB。最后,我将获得原始 RGB 图像的模糊版本。然而,我的平均滤波器总是返回灰色模糊图像。我虽然可能是因为我的 Cr,Cb 组件是灰色的。这就是我问这个问题的原因。
标签: c++ image opencv image-processing computer-vision