python opencv亮度变换
时间: 2023-06-11 15:06:42 浏览: 207
在 OpenCV 中,可以使用 addWeighted 函数来实现亮度变换。具体步骤如下:
1. 读取图片并将其转换为灰度图像。
```python
import cv2
# 读取图片
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
2. 定义一个变换矩阵,用于调整亮度。
```python
import numpy as np
# 定义变换矩阵
alpha = 1.5 # 增加亮度的倍数
beta = 50 # 亮度调整的常数项
M = np.ones(gray_img.shape, dtype='uint8') * alpha
N = np.ones(gray_img.shape, dtype='uint8') * beta
```
在上述代码中,alpha 和 beta 分别为亮度变换的系数和常数项,M 和 N 是与图像大小相同的矩阵。
3. 将变换矩阵应用到图像上。
```python
# 将变换矩阵应用到图像上
result = cv2.addWeighted(gray_img, alpha, np.zeros(gray_img.shape, dtype='uint8'), 0, beta)
```
在上述代码中,cv2.addWeighted 函数的第一个参数是输入图像,第二个参数是输入图像的权重,第三个参数是与输入图像大小相同的矩阵,第四个参数是与输入图像大小相同的矩阵的权重,第五个参数是亮度调整的常数项。
4. 显示结果。
```python
# 显示结果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
完整代码如下:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 定义变换矩阵
alpha = 1.5 # 增加亮度的倍数
beta = 50 # 亮度调整的常数项
M = np.ones(gray_img.shape, dtype='uint8') * alpha
N = np.ones(gray_img.shape, dtype='uint8') * beta
# 将变换矩阵应用到图像上
result = cv2.addWeighted(gray_img, alpha, np.zeros(gray_img.shape, dtype='uint8'), 0, beta)
# 显示结果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
注意:上述代码中的亮度变换是基于灰度图像进行的。如果需要对彩色图像进行亮度变换,则需要对每个通道进行单独的亮度变换。
阅读全文