如何使用opencv制作photoshop的色彩平衡

信息处理 图像处理 计算机视觉 图片 opencv 颜色
2022-01-26 16:43:47

我想以编程方式制作相同的东西Color balancePhotoshop如下图所示

在此处输入图像描述

如果我们在 Photoshop 中具有相同的条形位置,那么我们如何在 OpenCV 中制作它们,因为我不明白的问题是我们有RGB格式的图像是的,我们可以转换为其他颜色格式,但是我如何理解这些值(做如果 PS 中的 Cyan Level 为 -20,我们需要减去 OpenCV 中的 Cyan 值?或者我们需要添加?)并在 OpenCV 中执行相同的操作,例如,如果我需要更改 中的值Cyan是否需要转换图像首先在青色和洋红色中添加值,然后将其转换回然后增加OpenCv 中是否有任何内置函数MagentaBlueBGRblueShadows , MidTones and Highlight

我正在尝试这样的事情

Mat img = imread("E:\\raw_3.jpg");
vector<Mat> colors;
split(img,colors);
colors[0] += 69;
colors[1] += 40 ;
colors[2] -= 23 ;
merge(colors,img);
imshow("image" , img);
imwrite("E:\\color_balance.jpg",img);
waitKey();

对于青色 - 红色 = -23 品红色 - 绿色 = 40 黄色 - 蓝色 = 69 但我没有得到应有的准确结果

1个回答

OpenCV 没有任何 API 可以将数据分为低光、中间色调和高光。但是您可以通过设置一些阈值将图像中的像素分类为阴影、中间色调和高光。因为它们取决于亮度首先将您的图像转换为 YUV。如果它的8位深度,则亮度小于70的像素为低光,70-180的像素为中间调,180-255的像素为高光。

当青色-红色为-20时,将红色减少-20是不够的。因为它也会影响图像的亮度。因此,不是将红色减少 20,而是将其减少 10,并将绿色和蓝色增加 5。减少红色与增加蓝色和绿色相同,同时也保持亮度。您可以对洋红色-绿色和黄色-蓝色执行相同的操作。希望这对您有所帮助。