OpenCV-图像通道处理

文章目录

所有相关接口验证demo以上传至仓库

代码地址:https://gitee.com/norep/learn-opencv

色彩空间转换

Python 复制代码
dst = cv2.cvtColor(src, code)

参数说明:

  • src:一个 NumPy 数组,表示要转换的源图像。

  • code:一个字符串或整数,表示转换的目标颜色空间。不同的代码对应不同的转换。

返回值:

  • dst:一个 NumPy 数组,表示转换后的图像。

常见的颜色空间转换代码包括:

  • cv2.COLOR_BGR2GRAY:将 BGR 图像转换为灰度图像。

  • cv2.COLOR_BGR2RGB:将 BGR 图像转换为 RGB 图像。

  • cv2.COLOR_BGR2HSV:将 BGR 图像转换为 HSV 图像。

  • cv2.COLOR_BGR2HLS:将 BGR 图像转换为 HLS 图像。

  • cv2.COLOR_BGR2YCrCb:将 BGR 图像转换为 YCrCb 图像。

图像通道分离与融合

通道分离

cv2.split用于将一个多通道图像(例如,彩色图像)分割成单独的通道。

Python 复制代码
channels = cv2.split(image)
# b,g,r = cv2.split(pic)

参数说明:

  • image:一个 NumPy 数组,表示要分割的多通道图像。这个图像应该有三个通道(BGR 格式),或者一个通道(灰度图像)。

返回值:

  • channels:一个元组,包含三个 NumPy 数组,分别对应原始图像的三个通道。如果 image 是一个灰度图像,那么这个元组将只包含一个数组。

通道融合

Python 复制代码
dst = cv2.merge(images)
# img2 = cv2.merge((b,g,r))

参数说明:

  • images:一个包含 NumPy 数组的元组或列表,表示要合并的图像通道。每个数组都应该有相同的高度和宽度,但可以有不同的通道数。

返回值:

  • dst:一个 NumPy 数组,表示合并后的多通道图像。

图像运算

OpenCV的图像运算接口,运算的两个图像应该保持相同的大小与类型。

当值超出通道数据最大值时,保持最大值,小于0时,保持0。

如:图像为uint8类型,结算结果为0-255,该通道运算结果数值大于255时,实际结果保持255,如果运算结果为负数,实际结果为0。

图像相加

Python 复制代码
dst = cv2.add(src1, src2)

图像相减

Python 复制代码
dst = cv2.subtract(src1, src2)

图像相乘

Python 复制代码
dst = cv2.multiply(src1, src2)

图像相除

Python 复制代码
dst = cv2.divide(src1, src2)

参数说明:

  • src1:一个 NumPy 数组,表示要运算的第一个图像。

  • src2:一个 NumPy 数组,表示要运算的第二个图像。这个图像应该与 src1 有相同的大小和类型。

返回值:

  • dst:一个 NumPy 数组,表示运算后的结果图像。

加权相加

用于将两个图像或一个图像和一个标量相加,同时可以为每个图像或标量指定权重。

Python 复制代码
dst = cv2.addWeighted(src1, alpha, src2, beta, gamma)
# result = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)

参数说明:

  • src1:一个 NumPy 数组,表示要相加的第一个图像。

  • alpha:一个浮点数,表示 src1 的权重。

  • src2:一个 NumPy 数组,表示要相加的第二个图像。这个图像应该与 src1 有相同的大小和类型。

  • beta:一个浮点数,表示 src2 的权重。

  • gamma:一个浮点数,表示一个可选的常数项,通常用于偏移或缩放结果。

返回值:

  • dst:一个 NumPy 数组,表示加权相加后的结果图像。

图像位运算

非运算

用于对图像中的每个像素执行按位非运算。这个函数在图像处理中非常有用,特别是在需要反转图像的像素值或创建特殊的视觉效果时

Python 复制代码
dst = cv2.bitwise_not(src)

参数说明:

  • src1:一个 NumPy 数组,表示要进行按位非运算的源图像。

返回值:

  • dst:一个 NumPy 数组,表示按位非运算后的结果图像。

与运算

Python 复制代码
dst = cv2.bitwise_and(src)

或运算

Python 复制代码
dst = cv2.bitwise_or(src)

异或运算

Python 复制代码
dst = cv2.bitwise_xor(src)

参数说明:

  • src1:一个 NumPy 数组,表示要进行运算的第一个图像。

  • src2:一个 NumPy 数组,表示要进行运算的第二个图像。这个图像应该与 src1 有相同的大小和类型。

返回值:

  • dst:一个 NumPy 数组,表示运算后的结果图像。
相关推荐
冬奇Lab13 分钟前
DeepSeek Harness 系列(06):System Prompt 组装——动态提示词的工程实现
人工智能·deepseek
罗西的思考1 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
火山引擎开发者社区2 小时前
基于 AgentKit 的端到端需求交付平台:从个人提效到组织提效的 AI 落地实践
人工智能
三声三视3 小时前
75 条文章索引被一条 add 清成 1 条,退出码还是 0:tri-article 的 index.py 我读了 205 行
人工智能·ai·skill·tri-skills·tri-article
蓝速科技3 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
QYR-分析3 小时前
重轨受电弓行业深度报告:市场格局、技术迭代与发展前景
大数据·数据库·人工智能
火山引擎开发者社区3 小时前
# 开发者集结!共探 AI Agent 创新应用新可能
人工智能
牛油果子哥q3 小时前
生产级AI项目上线全流程:Docker容器化、服务编排、监控告警、日志收集、容灾降级、线上运维闭环
人工智能·ai
Pocker_Spades_A3 小时前
视频不用再一张张截图:ClipSketch AI 把关键画面转成漫画,还能顺手生成文案
人工智能·音视频
小小测试开发3 小时前
LLM 结构化输出测试:Schema 契约 + 故障注入,让工具调用的 JSON 不再靠重试赌运气
人工智能·json