Python-opencv实现Trackbar调节亮度对比度

根据以下博客代码翻译成了python

https://blog.csdn.net/c80486/article/details/52505061

代码如下:

import cv2 as cv
import math
import numpy as np

brightness = 255
contrast = 255
window_name = 'adjust_B&C'

def CLIP_RANGE(value,min,max):
    if value > max:
        return max
    else:
        if value<min:
            return min
        else:
            return value

def COLOR_RANGE(value):

    return CLIP_RANGE(value, 0, 255)

def adjustBrightnessContrast(arg):

    brightness = cv.getTrackbarPos('brightness', window_name) - 255
    contrast = cv.getTrackbarPos('contrast', window_name) - 255

    brightness = CLIP_RANGE(brightness,-255,255)
    contrast = CLIP_RANGE(contrast,-255,255)

    '''
    	Algorithm of Brightness Contrast transformation
	The formula is:
		y = [x - 127.5 * (1 - B)] * k + 127.5 * (1 + B);
		x is the input pixel value
		y is the output pixel value
		B is brightness, value range is [-1,1]
		k is used to adjust contrast
			k = tan( (45 + 44 * c) / 180 * PI );
			c is contrast, value range is [-1,1]
    '''
    B = brightness / 255
    c = contrast / 255
    k = math.tan(( 45 + 44 * c) / 180 * math.pi)
		
	# LUT(LOOK -UP-TABLE)查找表
	
    ListaVred = [0] * 256
    for i in range(0, 256):
        ListaVred[i] = int(COLOR_RANGE((i - 127.5 * (1 - B)) * k + 127.5 * (1 + B)))
    ListaVred = np.array(ListaVred)
    new_image = cv.LUT(image,ListaVred)
    
    # 显示结果图像
    
    cv.imshow(window_name,new_image.astype(np.uint8))


if __name__ == '__main__':
    # read image
    image = cv.imread("g:/hand.jpg")

    cv.namedWindow(window_name)
    # create trackbars
    cv.createTrackbar('brightness', window_name, brightness, brightness*2, adjustBrightnessContrast)
    cv.createTrackbar('contrast', window_name, contrast, contrast*2, adjustBrightnessContrast)

    adjustBrightnessContrast(0)
    cv.waitKey(0)
    cv.destroyAllWindows()

运行效果

前一张为原图,后一张为亮度对比度调节后图像

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五岁能抬头s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值