使用opencv怎么调整图像亮度和对比度

  介绍

使用opencv怎么调整图像亮度和对比度?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>图像处理

图像变换就是找到一个函数,把原始图像矩阵经过函数处理后,转换为目标图像矩阵。
可以分为两种方式,即像素级别的变换和区域级别的变换

<李>

点操作符(像素变换)

<李>

社区(成立)操作符

像素级别的变换就相当于<代码> \ (p_后{}(i, j)=f (p_之前{}(i, j)) \), 即变换后的每个像素值都与变换前的同位置的像素值有个函数映射关系。

<>强对比度和亮度改变

<强>线性变换

最常用的是线性变换。即\α(g (i, j)=\ \ cdot f (i, j) +β\ \)
f (i, j)是原像素值,g (i, j)是变换后的像素值。
\α(\ \)调整对比度,\β(\ \)调整亮度。有时也称之为获得和偏见参数。

对比度是什么?不就是“亮和暗的区别“吗?也就是像素值的大小的区别。那我乘以一个α系数,当α很大的时候就是放大了这种亮度值的差异,也就是提高了对比度,当α很小时,也就是缩小了亮度的差异,也就是缩小了对比度。

β就更好理解了,直接在像素的亮度值上加上一个数,正数就是提高亮度,负数降低亮度。

看一下下面代码的示例:

得到__future__  import  print_function   得到builtins  import 输入   import  cv2  as 简历   import  numpy  as  np   import  argparse   #,Read  image  given  by 用户   parser =, argparse.ArgumentParser(描述=& # 39;Code  for  Changing 从而contrast 以及brightness  of  an 形象!,教程# 39;公司)   parser.add_argument(& # 39;——输入# 39;,,帮助=& # 39;Path 用input 图像强生# 39;,,默认=& # 39;lena.jpg& # 39;)   时间=args  parser.parse_args ()   时间=image  cv.imread (cv.samples.findFile (args.input))   if  image  is 没有:   打印才能(& # 39;Could  not  open 或是find 从而形象:,& # 39;,,args.input)   退出才能(0)   时间=new_image  np.zeros (image.shape, image.dtype)   alpha  1.0=,, # Simple  contrast 控制   beta =, 0,, # Simple  brightness 控制   #,Initialize 价值   打印(& # 39;,Basic  Linear  Transforms  & # 39;)   打印(& # 39;- - - - - - - - - - - - - - - - - - - - - - - - - # 39;)   试一试:   alpha 才能=,浮子(输入(& # 39;*,Enter 从而alpha  value  [1.0 - -3.0]:, & # 39;))   beta 才能=,int(输入(& # 39;*,Enter 从而beta  value  (0 - 100):, & # 39;))   except  ValueError:   打印才能(& # 39;错误,,not  a 数字# 39;)   #,Do 从而,operation  new_image (i, j),=,α*图像(i, j), +β   #,Instead  of  these  & # 39;为# 39;,loops  could  have  used 简单:我方表示歉意=#,new_image  cv.convertScaleAbs(图像,,α=α,β=β)   #,but  wanted 用show 你我方表示歉意请;用access 从而pixels :)   for  y 拷贝范围(image.shape [0]):   for 才能;x 拷贝范围(image.shape [1]):   ,,,for  c 拷贝范围(image.shape [2]):   ,,,,,new_image [y、x、c],=, np.clip(α*图像(y、x、c), +,β,0,255)   cv.imshow (& # 39; Original 图像# 39;,,图片)   cv.imshow (& # 39; New 图像# 39;,,new_image)   #,Wait  until  user  press  some 关键   cv.waitKey ()

提示模块& # 39;cv2& # 39;没有属性& # 39;样品# 39;的话要先安装pip安装opencv-python==4.0.0.21。

执行:python change_brightness_contrast。py——输入。/lights.jpeg

线性变换有个问题,如上图,α=1.3,β=40,提高原图亮度的同时,导致云几乎看不见了。如果要看见云的话,建筑的亮度又不够。

这个时候就引入了非线性变换。称之为伽马校正

\ (O=\左(\压裂{我}{255}\右)^{\伽马}\乘以255 \)

与线性变换不同,对不同的原始亮度值,其改变强度是不同的,是非线性的。


使用opencv怎么调整图像亮度和对比度”> <br/> </p> <p>在γ<1的时候,会提高图片亮度.> 1时,降低亮度。</p> <p> <br/> <img src=

使用opencv怎么调整图像亮度和对比度