python 调整图片亮度对比度饱和度
(想要完整代码直接划到最后)
原理比较简单,本质上是对图像各个通道的每个像素点做线性变换,对超出范围[0,255]的做截断处理,所以使用numpy处理比较方便
安装依赖库
pip install numpy
pip install opencv-python
亮度变换
# 修改图像的亮度,brightness取值0~2 <1表示变暗 >1表示变亮
def change_brightness(img, brightness):
[averB, averG, averR] = np.array(cv2.mean(img))[:-1] / 3
k = np.ones((img.shape))
k[:, :, 0] *= averB
k[:, :, 1] *= averG
k[:, :, 2] *= averR
img = img + (brightness - 1) * k
img[img > 255] = 255
img[img < 0] = 0
return img.astype(np.uint8)
一下函数为了方便展示调用,可自行选择使用
def cvshow(name, img):
cv2.namedWindow(name, cv2.WINDOW_NORMAL)
cv2.resizeWindow(name,1280,720)
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyWindow(name)
对"sc/1.jpg"应用亮度变换