opencv 改变图像亮度
时间: 2023-07-24 17:02:17 浏览: 79
你可以使用 OpenCV 库来改变图像的亮度。下面是一个基本的方法:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('image.jpg')
# 将图像转换为浮点型
image = image.astype(np.float32) / 255.0
# 调整亮度
brightness = 0.5 # 亮度缩放因子,大于1增加亮度,小于1减少亮度
adjusted_image = cv2.add(image, brightness)
# 将图像转回整数型
adjusted_image = (adjusted_image * 255).astype(np.uint8)
# 显示图像
cv2.imshow('Original', image)
cv2.imshow('Adjusted', adjusted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先加载图像,并将其转换为浮点型。然后,通过添加一个亮度缩放因子来调整亮度。最后,将调整后的图像转回整数型,并显示原始图像和调整后的图像。
你可以根据需要调整亮度缩放因子来增加或减少亮度。值大于1会增加亮度,值小于1会减少亮度。
相关问题
opencv提高图片亮度
在OpenCV中,你可以使用`cv2.convertScaleAbs()`函数来调整图像的亮度。这个函数会对输入的图像进行线性变换,然后应用绝对值,从而改变图像的整体亮度。基本的步骤如下:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE) # 如果是彩色图,需要先转为灰度
# 定义亮度增益(scale factor),大于1表示增加亮度,小于1则降低亮度
brightness_gain = 1.5 # 调整这个数值以增大或减小亮度
# 应用转换
brightened_image = cv2.convertScaleAbs(image, alpha=brightness_gain, beta=0)
# 写回或显示结果
cv2.imwrite('output_image.jpg', brightened_image)
# 或者
cv2.imshow('Brightened Image', brightened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,`alpha`参数控制了亮度变化的比例,`beta`参数用于整体偏移(如添加亮度过量时的白色背景)。`IMREAD_GRAYSCALE`常用于处理灰度图像,如果处理的是彩色图像,则需要先转换。
OpenCV读取图片亮度,饱和度,对比度,锐度
OpenCV是一个广泛用于计算机视觉和机器学习的开源库,在处理图像时,它可以调整图像的亮度、饱和度、对比度以及锐度。以下是简单介绍:
1. **亮度调整(Brightness)**:通过`cv2.addWeighted()`函数可以调整图像的整体亮度,该函数接受源图像、权重(0到1之间,增加亮度则设为大于1)、加权值(通常为常数0)和目标图像作为输入。
2. **饱和度调整(Saturation)**:OpenCV本身并不直接提供调整饱和度的功能,但你可以通过调整颜色空间转换后的HSL(色相、饱和度、明度)通道来改变饱和度。例如,将图像从BGR转为HSV,然后调整HSV的“S”通道。
3. **对比度调整(Contrast)**:可以通过减去图像平均灰度值再乘以一个放大系数来增强对比度。另一种方法是使用直方图均衡化,如`cv2.equalizeHist()`函数,它能改善整个图像的对比度。
4. **锐度调整(Sharpening)**:常用的锐化操作有高斯模糊后再减去未模糊的原始图像,这可以通过`cv2.filter2D()`结合卷积核(如负梯度的倒置版本)来实现。另外,也可以使用Unsharp Mask(边缘增强滤波)技术。
```python
# 示例代码
import cv2
import numpy as np
def adjust_brightness(image, brightness_factor):
return cv2.addWeighted(image, brightness_factor, image, 1 - brightness_factor, 0)
def adjust_contrast(image):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
hist, _ = np.histogram(gray.flatten(), 256, [0, 256])
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
gamma_table = np.array([((i / 255) ** 2.2) * 255 for i in range(256)])
adjusted = cv2.LUT(gray, gamma_table)
return cv2.convertScaleAbs(adjusted)
# 使用这些函数对图像进行调整...
```
阅读全文