OpenCV—Python 对比度与亮度调整

对比度与亮度调整方法1

对图片对比度和亮度的调整一般通过下面公式计算:
g ( x , y ) = a ∗ f ( x , y ) + b g(x,y) = a*f(x,y)+b g(x,y)=af(x,y)+b

  • f ( x , y ) f(x,y) f(x,y) 代表源图像 x行,y列的像素点的c通道的数值
  • g ( x , y ) g(x,y) g(x,y) 代表目标图像x行,y列的像素点的c通道的数值
  • a a a 参数(a>0)表示放大的倍数(一般在0.0~3.0之间)
  • b b b 参数一般称为偏置,用来调节亮度
import  cv2

img=cv2.imread('cat.jpg')
cv2.imshow('original_img',img)
rows,cols,channels=img.shape
dst=img.copy()

a=0.5
b=80
for i in range(rows):
    for j in range(cols):
        for c in range(3):
            color=img[i,j][c]*a+b
            if color>255:           # 防止像素值越界(0~255)
                dst[i,j][c]=255
            elif color<0:           # 防止像素值越界(0~255)
                dst[i,j][c]=0
                
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

对比度与亮度调整方法2

addWeighted函数:计算两个图像阵列的加权和

"""
函数详解:
addWeighted(InputArray_src1, 
            double_alpha, 
            InputArray_src2, 
            double_beta, 
            double_gamma, 
            OutputArray_dst, 
            int_dtype=-1
            );
"""

一共有七个参数:前4个是两张要合成的图片及它们所占比例,
                            第5个double gamma起微调作用,
                            第6个OutputArray dst是合成后的图片,
                            第7个输出的图片的类型(可选参数,默认-1

有公式得出两个图片加成输出的图片为:dst = src1 * alpha+src2 * beta + gamma

def contrast_img(img1, c, b):  # 亮度就是每个像素所有通道都加上b
    rows, cols, channels = img1.shape

    # 新建全零(黑色)图片数组:np.zeros(img1.shape, dtype=uint8)
    blank = np.zeros([rows, cols, channels], img1.dtype)
    dst = cv2.addWeighted(img1, c, blank, 1-c, b)
    cv2.imshow('original_img', img)
    cv2.imshow("contrast_img", dst)

img = cv2.imread(r"./cat.png", cv2.IMREAD_COLOR)
contrast_img(img, 1.3, 3)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SongpingWang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值