Python----计算机视觉处理(Opencv:图像亮度变换)

发布于:2025-03-25 ⋅ 阅读:(61) ⋅ 点赞:(0)

一、图像亮度变换

亮度调整:图像像素强度整体变高或者变低。

对比度调整:图像暗处像素强度变低,图像亮处像素强度变高,从而拉大中间某个区域范围的显示精 度。

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 有关其他仅限关键字的参数