像 Gimp 一样的 OpenCV 亮度和对比度
OpenCV Brightness & Contrast like in Gimp
我想像在 Gimp 中一样在 Python 的 OpenCV 中调整对比度。我想这样做:
在 Gimp 中很简单。我只是使用 Colors->Brightness & Contrast
,并将对比度设置为 127
。
但是我不知道如何在 Python 中执行此操作,而且我找不到解决此问题的任何方法。
勾选here。公式为:
new_value = (old_value - 0.5) × contrast + 0.5 + brightness
在 python 中,您可以轻松地将这些应用为矩阵运算。请注意这里的像素值在[0,1]范围内,所以当范围在[0,255]范围内时0.5相当于127。
在同一 link 中还报告了代码,具有像素级操作(我复制只是为了完整性):
function transform(value, brightness, contrast)
return (value-0.5)*contrast+0.5+brightness
end
function transform_rgb(r,g,b, brightness, contrast)
return transform(r, brightness, contrast), transform(g, brightness, contrast), transform(b, brightness, contrast)
end
function bcontrast_get_rgb(x,y,brightness, contrast)
r,g,b=get_rgb(x,y)
return transform_rgb(r,g,b, brightness, contrast)
end
function bcontrast(brightness, contrast)
for y=0, height-1 do
for x=0, width-1 do
set_rgb(x,y, bcontrast_get_rgb(x,y,brightness,contrast))
end
end
flush ()
end
bcontrast(0.25, 2.0)
GIMP 使用的对比度和亮度公式在此文件中定义:https://github.com/GNOME/gimp/blob/GIMP_2_10_10/app/operations/gimpoperationbrightnesscontrast.c
if (brightness < 0.0)
value = value * (1.0 + brightness);
else
value = value + ((1.0 - value) * brightness);
value = (value - 0.5) * slant + 0.5;
在哪里
brightness = config->brightness / 2.0;
slant = tan ((config->contrast + 1) * G_PI_4);
假设图像预先归一化到 [0, 1] 范围。
我想像在 Gimp 中一样在 Python 的 OpenCV 中调整对比度。我想这样做:
在 Gimp 中很简单。我只是使用 Colors->Brightness & Contrast
,并将对比度设置为 127
。
但是我不知道如何在 Python 中执行此操作,而且我找不到解决此问题的任何方法。
勾选here。公式为:
new_value = (old_value - 0.5) × contrast + 0.5 + brightness
在 python 中,您可以轻松地将这些应用为矩阵运算。请注意这里的像素值在[0,1]范围内,所以当范围在[0,255]范围内时0.5相当于127。
在同一 link 中还报告了代码,具有像素级操作(我复制只是为了完整性):
function transform(value, brightness, contrast)
return (value-0.5)*contrast+0.5+brightness
end
function transform_rgb(r,g,b, brightness, contrast)
return transform(r, brightness, contrast), transform(g, brightness, contrast), transform(b, brightness, contrast)
end
function bcontrast_get_rgb(x,y,brightness, contrast)
r,g,b=get_rgb(x,y)
return transform_rgb(r,g,b, brightness, contrast)
end
function bcontrast(brightness, contrast)
for y=0, height-1 do
for x=0, width-1 do
set_rgb(x,y, bcontrast_get_rgb(x,y,brightness,contrast))
end
end
flush ()
end
bcontrast(0.25, 2.0)
GIMP 使用的对比度和亮度公式在此文件中定义:https://github.com/GNOME/gimp/blob/GIMP_2_10_10/app/operations/gimpoperationbrightnesscontrast.c
if (brightness < 0.0)
value = value * (1.0 + brightness);
else
value = value + ((1.0 - value) * brightness);
value = (value - 0.5) * slant + 0.5;
在哪里
brightness = config->brightness / 2.0;
slant = tan ((config->contrast + 1) * G_PI_4);
假设图像预先归一化到 [0, 1] 范围。