我正在开展一个项目,在那里我读取图像,将数据加载到Mat数据类型中。然后,我对它做了一些操作。
我的所有操作都是在假设颜色空间为RGB(BGR as opencv以这种方式存储)的情况下完成的。一切都很好。我正在尝试将输出图像转换为YUV格式。但是当我使用以下命令从BGR2YUV转换输出图像时,我发现生成的图像颜色完全改变了。
cvtColor(img,out,CV_RGB2YCrCb);
例如,我的输出RGB图像为绿色。当我将其转换为YUV格式并显示生成的图像时,我发现它是蓝色而不是绿色。 我想要一种转换方式,以便输出也变为绿色。
如何在不改变图像颜色的情况下将颜色空间从RGB更改为YUV?
答案 0 :(得分:1)
图像的颜色没有改变,只是编码。
如果将颜色转换为YUV,然后使用imshow()
,则假定颜色仍为RGB,因此显示错误。
如果您有YUV图像并且想要显示它,则首先必须将其转换回RGB。
当您询问“如何在不改变图像颜色的情况下将色彩空间从RGB更改为YUV?”你基本上是在说“如何在不进行颜色转换的情况下进行颜色转换?”这当然是不可能的。