opencv知识库:cv2.add()函数和“+”号运算符

需求场景

现有一灰度图像,需求是为该图像增加亮度。

原始灰度图像

预期目标图像

解决方案

不建议的方案------"+"运算符

假设我们需要为原始灰度图像的亮度整体提升88,那么利用"+"运算符的源码如下:

python 复制代码
import cv2

img_path = r"D:\pycharmproject\python_project\lena.jpg"
img = cv2.imread(img_path, 0) # 以灰度图像格式读取图像
l_value = 88 # 欲增加的亮度值
img = img + l_value # 利用"+"运算符进行亮度增强操作
cv2.imshow('lena', img)
cv2.waitKey(0)

运行结果

从结果可以看出,某些区域的亮度比【增强亮度前】更低

原因分析

由于cv2.imread()函数读取图像的数据格式是无符号8位整数(uint8) ,所以其数值范围是[0,255]。当应用"+"号运算符为原图增强亮度时,"+"的运算逻辑如下:
a + b = { a + b , a + b ≤ 255 m o d ( a + b , 256 ) , a + b > 255 (1) a + b= \begin{cases} a+b,\quad a+b\leq 255\\ mod(a+b, 256), \quad a+b>255 \end{cases} \tag{1} a+b={a+b,a+b≤255mod(a+b,256),a+b>255(1)

即如果原图某个像素值a=200,而欲增强的亮度值为b=88,则"+"的运算结果并不是a + b = 288, 而是288 % 256 = 32(可以利用a的数据格式是uint8的信息协助理解)

建议的方案------cv2.add()方法

源码如下:

python 复制代码
import cv2

img_path = r"D:\pycharmproject\python_project\lena.jpg"
img = cv2.imread(img_path, 0) # 以灰度图像格式读取图像
l_value = 88 # 欲增加的亮度值
img = cv2.add(img, l_value) # 利用cv2.add()方法进行亮度增强操作
cv2.imshow('lena', img)
cv2.waitKey(0)

运行结果

从结果来看,没有出现某些区域的亮度比【增强亮度前】更低的现象。

结果分析

当应用cv2.add()方法为原图增强亮度时,其运算逻辑如下:
a + b = { a + b , a + b ≤ 255 255 , a + b > 255 (1) a + b= \begin{cases} a+b,\quad a+b\leq 255\\ 255, \quad a+b>255 \end{cases} \tag{1} a+b={a+b,a+b≤255255,a+b>255(1)

即如果原图某个像素值a=200,而欲增强的亮度值为b=88,则cv2.add()方法的运算结果并不是a + b = 288, 而是255(相加结果超过255,一律取255)。

小结

经过上述分析,当需要对一张图像进行亮度增强或者对两幅图像进行叠加操作时,相比于"+"运行符,cv2.add()方法是更为安全的方案。

相关推荐
qq_4162764234 分钟前
LOFAR物理频谱特征提取及实现
人工智能
余俊晖1 小时前
如何构造一个文档解析的多模态大模型?MinerU2.5架构、数据、训练方法
人工智能·文档解析
Akamai中国3 小时前
Linebreak赋能实时化企业转型:专业系统集成商携手Akamai以实时智能革新企业运营
人工智能·云计算·云服务
LiJieNiub3 小时前
读懂目标检测:从基础概念到主流算法
人工智能·计算机视觉·目标跟踪
weixin_519535774 小时前
从ChatGPT到新质生产力:一份数据驱动的AI研究方向指南
人工智能·深度学习·机器学习·ai·chatgpt·数据分析·aigc
爱喝白开水a4 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
takashi_void4 小时前
如何在本地部署大语言模型(Windows,Mac,Linux)三系统教程
linux·人工智能·windows·macos·语言模型·nlp
OpenCSG4 小时前
【活动预告】2025斗拱开发者大会,共探支付与AI未来
人工智能·ai·开源·大模型·支付安全
生命是有光的4 小时前
【深度学习】神经网络基础
人工智能·深度学习·神经网络
数字供应链安全产品选型4 小时前
国家级!悬镜安全入选两项“网络安全国家标准应用实践案例”
人工智能·安全·web安全