OpenCV-粗略调整图片对比度和亮度

基本原理:两张图片合成。

先按照原来的图片的格式新建一个色素全为零的图片,然后按照两张图的比例不同合成一张新图片。主要用到函数:addWeighted函数

addWeighted()计算两个数组的加权和。函数addWeighted计算两个数组的加权和,如下所示:

其中我是数组元素的多维索引。在多通道阵列的情况下,每个通道都是独立处理的。该函数可以用矩阵表达式替换:dst = src1*alpha + src2*beta + gamma;

Parameters 参数

src1 first input array.
alpha weight of the first array elements.
src2 second input array of the same size and channel number as src1.
beta weight of the second array elements.
gamma scalar added to each sum.
dst output array that has the same size and number of channels as the input arrays.
dtype optional depth of the output array; when both input arrays have the same depth, dtype can be set to -1, which will be equivalent to src1.depth().
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def contrast_brightness_demo(image, c, b):
"""c 对比度;b 亮度"""
h, w, ch = image.shape # 获取shape的数值,height和width、通道

# 新建全零图片数组src2,将height和width,类型设置为原图片的通道类型(色素全为零,输出为全黑图片)
blank = np.zeros([h, w, ch], image.dtype)

dst = cv.addWeighted(image, c, blank, 1-c, b)
cv.imshow('demo', dst)

test = cv.imread('01image.JPG')
contrast_brightness_demo(test, 1.5, 50)
cv.waitKey(0)
cv.destroyAllWindows()

效果图


文章作者: ahoj
文章链接: https://ahoj.cc/2019/07/OpenCV-粗略调整图片对比度和亮度/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ahoj 的小本本