opencv 增加对比度代码
时间: 2025-04-27 09:27:40 浏览: 13
### 使用OpenCV增强图像对比度
为了提高图像的对比度,可以采用直方图均衡化的方法或者通过调整像素强度值的方式。下面提供两种方法的具体实现。
#### 方法一:直方图均衡化
直方图均衡化是一种常用的图像增强技术,能够自动调节灰度分布不均匀的情况,从而提升整体视觉效果[^3]。
```python
import cv2
import numpy as np
def enhance_contrast_histogram(image_path):
img = cv2.imread(image_path, 0) # Load image in grayscale mode
equ = cv2.equalizeHist(img)
res = np.hstack((img, equ)) # stacking images side-by-side for comparison
return res
```
此段代码读取给定路径下的图片并将其转换成灰度模式,接着调用`cv2.equalizeHist()`函数执行直方图均衡操作,最后返回原图与处理后的效果图拼接而成的新图像以便于比较。
#### 方法二:线性拉伸法
另一种简单有效的方式来增加对比度就是通过对每个像素点乘上一个比例因子k再加上偏移量b来进行变换:
\[ g(i,j)=k \times f(i,j)+b \]
其中\(f(i,j)\)表示原始输入图像中的某个位置处的颜色分量;而\(g(i,j)\)则代表经过映射之后得到的结果。通常情况下会选择合适的参数使得输出范围保持在合理区间内,比如对于8位无符号整数类型的彩色或灰阶图像来说,其合法数值应该介于0到255之间[^1]。
```python
import cv2
import numpy as np
def adjust_contrast_brightness(image_path, alpha=1.5, beta=-100):
"""
Adjusts the contrast and brightness of an input image.
Parameters:
image_path : str
Path to source image file.
alpha : float
Contrast control factor (1.0-3.0).
beta : int
Brightness control value (-100 to 100).
Returns:
result_image : ndarray
Processed image array with adjusted parameters applied.
"""
original_img = cv2.imread(image_path)
processed_img = cv2.convertScaleAbs(original_img, alpha=alpha, beta=beta)
return processed_img
```
上述Python脚本展示了如何利用`cv2.convertScaleAbs()`函数快速便捷地完成这一过程。该函数接受两个主要参数用于控制最终呈现的效果——分别是对比度系数(`alpha`)以及亮度增量(`beta`)。适当选取这两个变量可以使目标区域更加清晰可见的同时又不会造成过度曝光等问题的发生。
阅读全文
相关推荐


















