zoukankan      html  css  js  c++  java
  • Python-OpenCV——亮度和对比度

    亮度与对比度

    亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度。

    OpenCV中亮度和对比度应用这个公式来计算:g(x) = αf(x) + β,其中:α(>0)、β常称为增益与偏置值,分别控制图片的对比度和亮度。

    注:此处对α/β控制对比度和亮度有争议,具体请参考:OpenCV关于对比度和亮度的误解
    img = cv2.imread('lena.jpg')
    # 此处需注意,请参考后面的解释
    res = np.uint8(np.clip((1.5 * img + 10), 0, 255))
    tmp = np.hstack((img, res))  # 两张图片横向合并(便于对比显示)
    
    cv2.imshow('image', tmp)
    cv2.waitKey(0)

    还记得图像混合那一节中numpy对数据溢出的取模处理吗?250+10 = 260 => 260%256=4,它并不适用于我们的图像处理,所以用np.clip()函数将数据限定:a<0 => a=0, a>255 => a=255

    做个小练习吧!创建两个滑动条分别调整对比度和亮度(对比度范围:0~0.3, 亮度0~100)。提示:因为滑动条没有小数,所以可以设置为0~300,然后乘以0.01

    import cv2
    import numpy as np
    
    alpha = 0.3
    beta = 80
    img_path = "./a.png"
    img = cv2.imread(img_path)
    img2 = cv2.imread(img_path)
    
    def updateAlpha(x):
        global alpha,img,img2
        alpha = cv2.getTrackbarPos('Alpha','image')
        alpha = alpha * 0.01
        img = np.uint8(np.clip((alpha * img2 + beta), 0, 255))
    
    def updateBeta(x):
        global beta,img,img2
        beta = cv2.getTrackbarPos('Beta','image')
        img = np.uint8(np.clip((alpha * img2 + beta), 0, 255))
      
    
    # 创建窗口
    cv2.namedWindow('image')
    cv2.createTrackbar('Alpha','image',0,300,updateAlpha)
    cv2.createTrackbar('Beta','image',0,255,updateBeta)
    cv2.setTrackbarPos('Alpha','image',100)
    cv2.setTrackbarPos('Beta','image',10)
    # 设置鼠标事件回调
    #cv2.setMouseCallback('image',update)  
    
    
    while(True):
        cv2.imshow('image',img) 
        if cv2.waitKey(1) == ord('q'):  
            break
    
    cv2.destroyAllWindows()

    代码就不解释了,不了解的可参考这个教程:Python-OpenCV基础入门——滑动条组件(非常简明易懂)

    参考链接:https://www.jianshu.com/p/a23653f8b26b

  • 相关阅读:
    Intellij Idea 创建Web项目入门
    使用swagger作为restful api的doc文档生成
    SpringMVC中的参数绑定总结
    Spring注解@Resource和@Autowired区别对比
    java的(PO,VO,TO,BO,DAO,POJO)解释
    java有几种对象(PO,VO,DAO,BO,POJO)
    clone项目到本地
    修改虚拟机上Linux系统的IP地址
    虚拟机下CentOS 6.5配置IP地址的三种方法
    系统重启
  • 原文地址:https://www.cnblogs.com/lfri/p/10753019.html
Copyright © 2011-2022 走看看