Python 2.7 OpenCV亮度&;Gimp中的类对比度

Python 2.7 OpenCV亮度&;Gimp中的类对比度,python-2.7,opencv,gimp,Python 2.7,Opencv,Gimp,我想在Python的OpenCV中调整对比度,就像在Gimp中一样。我想这样做: 在Gimp中,它很简单。我只需使用颜色->亮度和对比度,并将对比度设置为127。 但我不知道如何在Python中实现这一点,也找不到任何解决此问题的方法。检查。公式是: new_value = (old_value - 0.5) × contrast + 0.5 + brightness 在python中,您可以轻松地将这些应用为矩阵操作。请注意,此处的像素值在[0,1]中,因此当范围在[0255]中时,0.5

我想在Python的OpenCV中调整对比度,就像在Gimp中一样。我想这样做:

在Gimp中,它很简单。我只需使用
颜色->亮度和对比度
,并将对比度设置为
127
。 但我不知道如何在Python中实现这一点,也找不到任何解决此问题的方法。

检查。公式是:

new_value = (old_value - 0.5) × contrast + 0.5 + brightness
在python中,您可以轻松地将这些应用为矩阵操作。请注意,此处的像素值在[0,1]中,因此当范围在[0255]中时,0.5相当于127

在同一链接中,还报告了带有像素操作的代码(我复制只是为了完整性):


GIMP使用的对比度和亮度公式在此文件中定义:


假设事先将图像标准化为[0,1]范围。

亮度和对比度值的范围是多少?在Gimp中,这些值的范围从-127到127。但使用bcontrast(0.25,2.0),它似乎不在这个领域。有什么建议吗?我不知道。您应该检查gimp源代码。将对比度设置为(0,10)和亮度设置为(-1,1)可能是有意义的。您还应该注意将负像素值钳制为0,并将其钳制为更大的值@克里斯汀戈尔德
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)
  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);