使用 OpenCV 调整对比度和亮度

问题描述 投票:0回答:1

所以我尝试用 OpenCV 稍微增加对比度和亮度。这就是我正在做的事情:

Mat image_copy;
cvtColor(image, image_copy, CV_BGRA2BGR);
image_copy.convertTo(image, -1, 1.3, 0.15);

我得到的图像看起来很奇怪。它有蓝色调。红色和蓝色是相反的。所以我的红色毛衣是蓝色的,桌子上的蓝色罐子是红色的。

为什么?

我基本上试图达到与在这里将对比度设置为 30 并将亮度设置为 15 时相同的效果:

http://camanjs.com/examples/

c++ opencv image-processing computer-vision
1个回答
0
投票

虽然不是特定于 OpenCV,但调整对比度和亮度非常容易。

我们来分析一下图像在

[0, 1]
范围内的情况。
然后我们可以将其范围调整为
[-0.5, 0.5]

那么它的值映射如下:

enter image description here

enter image description here

现在的模式是对比度是线的斜率,亮度是线的截距。

例如,这是为了增加

0.1
的亮度和
1.2
的对比度:

enter image description here

enter image description here

在实际应用中,应该使用更平滑的模型进行传输。
一种常见的对比函数是 Sigmoid 函数

© www.soinside.com 2019 - 2024. All rights reserved.