这是我参与更文挑战的第24天,活动详情查看: 更文挑战
OpenCV
是一个C++
库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python
中常使用OpenCV
库实现图像处理。
本文将介绍如何在Python3
中使用OpenCV
实现调节图片亮度与对比度。
前文
亮度调整是将图像像素的强度整体变大或变小。
对比度调整指的是图像暗处变得更暗,亮处变得更亮,从而拓宽某个区域内的显示精度。
本文中是创建两个滑动条分别调整对比度和亮度(对比度范围:0 ~ 0.3
, 亮度0 ~ 100
)。
提示:因为滑动条没有小数,所以可以设置为0 ~ 300
,然后乘以0.01
。
实现公式
图片对比度和亮度的调整一般通过下面公式计算:
-
f(x,y)
代表源图像x
行,y
列的像素点的c
通道的数值 -
g(x,y)
代表目标图像x
行,y
列的像素点的c
通道的数值 -
a
参数(a>0
)表示放大的倍数(一般在0.0~3.0
之间) -
b
参数一般称为偏置,用来调节亮度
实现代码
import cv2
import numpy as np
alpha = 0.3
beta = 80
img_path = "E:\\demo\\lena.jpg"
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)
while (True):
cv2.imshow('image', img)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllWindows()
复制代码
输出为:
本月将陆续推出相关系列文章,
篇篇精彩,尽请关注。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END