python opencv亮度平衡算法
时间: 2023-06-28 17:13:23 浏览: 54
在OpenCV中,可以使用以下代码实现亮度平衡算法:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('input.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算直方图
hist = cv2.calcHist([gray],[0],None,[256],[0,256])
# 找到最小亮度值
minVal = 0
while hist[minVal] < 0.0001 * gray.size:
minVal += 1
# 找到最大亮度值
maxVal = 255
while hist[maxVal] < 0.0001 * gray.size:
maxVal -= 1
# 执行亮度平衡
dst = np.zeros_like(gray)
for i in range(gray.shape[0]):
for j in range(gray.shape[1]):
if gray[i,j] < minVal:
dst[i,j] = 0
elif gray[i,j] > maxVal:
dst[i,j] = 255
else:
dst[i,j] = ((gray[i,j] - minVal) * 255) / (maxVal - minVal)
# 显示结果
cv2.imshow('Input', img)
cv2.imshow('Output', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该代码首先读取输入图像,并将其转换为灰度图像。然后,计算图像的直方图,并找到最小和最大亮度值。最后,执行亮度平衡,并显示结果。