opencv调整对比度 python
时间: 2025-04-21 19:45:59 浏览: 21
### 如何使用 Python 和 OpenCV 调整图像对比度
为了调整图像的对比度,在 Python 中可以利用 NumPy 库来实现线性变换,也可以通过 OpenCV 的 `convertScaleAbs` 函数完成这一操作[^1]。
#### 方法一:使用 convertScaleAbs 函数
此方法简单高效,适用于大多数情况下的对比度增强需求。下面是一个具体的例子:
```python
import cv2
import numpy as np
# 加载原始图片
img = cv2.imread('image_path')
# alpha 控制对比度 (1.0-3.0),beta 控制亮度 (-100-100)
alpha = 1.5
beta = 0
adjusted_img = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)
cv2.imshow('Original Image', img)
cv2.imshow('Adjusted Contrast Image', adjusted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码展示了如何加载一张图片并对其进行对比度调整。参数 `alpha` 可以设置为大于 1 的数值以增加对比度;而 `beta` 则用于控制整体亮度变化。
#### 方法二:手动计算像素值
另一种方式是遍历每一个像素点,按照给定公式重新分配其灰度级或颜色强度,从而达到改变对比度的效果。这种方法虽然更灵活但也更加耗时。
```python
def adjust_contrast(image, factor):
mean_intensity = np.mean(cv2.cvtColor(image, cv2.COLOR_BGR2GRAY))
for y in range(image.shape[0]):
for x in range(image.shape[1]):
for c in range(image.shape[2]):
new_value = int((image[y,x,c] - mean_intensity) * factor + mean_intensity)
# 防止溢出
if new_value > 255:
new_value = 255
elif new_value < 0:
new_value = 0
image[y,x,c] = new_value
return image
img = cv2.imread('image_path')
factor = 1.5 # 对比度因子
result = adjust_contrast(img.copy(), factor)
cv2.imshow('Original Image', img)
cv2.imshow('Contrast Adjusted Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述两种方案都可以有效地提高图像质量,具体选择取决于实际应用场景和个人偏好。
阅读全文
相关推荐


















