判断是曝光还是欠曝光图片,并进行光照矫正的代码
时间: 2024-02-01 07:17:05 浏览: 88
matlab对图像的增强代码--1602--:毕业课题:光照不均匀图像增强处理系统设计与实现
以下是一个简单的判断图片曝光的代码示例:
```python
import cv2
def is_overexposed(img):
# 计算亮度的平均值
brightness = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
mean_brightness = cv2.mean(brightness)[0]
# 判断是否过曝
return mean_brightness >= 245
def is_underexposed(img):
# 计算亮度的平均值
brightness = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
mean_brightness = cv2.mean(brightness)[0]
# 判断是否欠曝
return mean_brightness <= 10
```
对于过曝或欠曝的图片,可以使用以下代码进行光照矫正:
```python
def correct_exposure(img):
# 计算亮度的平均值
brightness = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
mean_brightness = cv2.mean(brightness)[0]
# 如果过曝,则降低亮度
if mean_brightness >= 245:
img = cv2.convertScaleAbs(img, alpha=0.5, beta=0)
# 如果欠曝,则提高亮度
elif mean_brightness <= 10:
img = cv2.convertScaleAbs(img, alpha=2, beta=0)
return img
```
上述代码中,`cv2.convertScaleAbs` 函数用于将像素值缩放到指定的范围内。其中,`alpha` 控制缩放的比例,`beta` 控制偏移量。对于过曝的图片,将亮度缩小到原来的一半,即 `alpha=0.5`;对于欠曝的图片,将亮度增加到原来的两倍,即 `alpha=2`。
阅读全文