一、图像亮度变换
亮度调整:图像像素强度整体变高或者变低。
对比度调整:图像暗处像素强度变低,图像亮处像素强度变高,从而拉大中间某个区域范围的显示精 度。
A:原图 B:提高亮度
C:把亮度降低 D:灰度化
把亮度调高,就是图片中的所有像素值加上了一个固定值;
把亮度调低,就是图片中的所 有像素值减去了一个固定值;
增大像素对比度(白的地方更白,黑的地方更黑)
减小像素对比度 (整幅图都趋于一个颜色)
导入模块
import cv2
import numpy as np
输入图像
img=cv2.imread('lena.png')
调整亮度
img_add=np.uint8(np.clip(img*1.0+100,0,255))
输出图像
cv2.imshow('img',img)
cv2.imshow('img_add',img_add)
cv2.waitKey(0)
完整代码
import cv2
import numpy as np
# 读取输入图像
img = cv2.imread('lena.png') # 从文件中加载图像
# 对图像进行亮度增加操作
# 1. 将图像数据转换为浮点型,以避免溢出;
# 2. 将每个像素值加上 100;
# 3. 使用 np.clip 限制像素值在 0 到 255 之间,防止超出范围;
# 4. 最后将结果转换回无符号 8 位整型(uint8),用于图像显示。
img_add = np.uint8(np.clip(img * 1.0 + 100, 0, 255))
# 显示原始图像
cv2.imshow('img', img) # 在窗口中显示原图像
# 显示处理后的图像
cv2.imshow('img_add', img_add) # 在窗口中显示亮度增加后的图像
# 等待用户按键,任何键按下后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows() # 关闭所有 OpenCV 创建的窗口
二、库函数
2.1、clip()
限制数组中的值。 给定一个区间,超出该区间的值将被限制到区间的边界。例如,如果指定的区间为``[0, 1]``, 则小于0的值将变为0,而大于1的值将变为1。 等效于但比``np.minimum(a_max, np.maximum(a, a_min))``更快。 不会检查``a_min < a_max``的条件。
numpy.clip(a, a_min=<no value>, a_max=<no value>, out=None, *, min=<no value>, max=<no value>, **kwargs)
方法 | 描述 |
---|---|
a | 包含要限制的元素的数组。 |
a_min, a_max | 最小值和最大值。如果为``None``,则不对相应边界进行限制。如果``a_min``和``a_max``都为``None``, 则返回数组的元素保持不变。这两个参数会与``a``进行广播。 |
out | 结果将放置在此数组中。它可以是输入数组,以进行原地限制。`out`必须具有正确的形状以容纳输出。 其类型保持不变。 |
min, max | 兼容数组 API 的替代参数,用于``a_min``和``a_max``。可以同时传递``a_min``和``a_max``或``min``和``max``。 默认值:``None``。 |
**kwargs | 有关其他仅限关键字的参数 |