第四章 Opencv图像色彩空间与通道
文章目录
- 1.色彩空间
- 1-1.RGB/BGR色彩空间
- 1-2.GRAY色彩空间
- 1-3.HSV色彩空间
- 2.通道
- 2-1.拆分通道:`split()`方法
- 1.拆BGR色彩空间图像的通道
- 2.拆HSV色彩空间图像的通道
- 2-2.合并通道:`merge()`方法
- 1.B、G、R 通道的合并
- 2.H、S、V 通道的合并
- 3.B、G、R、A 通道的合并
1.色彩空间
人眼看到不同频率的光会感受到不同的颜色,人们为了表示这些不同频率光线的色彩,就建立了各种色彩模型,这些色彩模型就称作色彩空间。
1-1.RGB/BGR色彩空间
RGB/BGR色彩空间是基于三基色的;我们一般把一张彩色图像的色彩空间默认为是RGB色彩空间,但因为Opencv拆分一张彩色图像的通道默认顺序是 B→ G→ R,所以Opencv把一张彩色图像的色彩空间默认为BGR色彩空间。
1-2.GRAY色彩空间
GRAY色彩空间通常指的是灰度图像,灰度图像的像素被划分为256个灰度级别,每个像素为其中的一个级别。(前面也讲到过)
-
BGR色彩空间转换到GRAY色彩空间:
dst = cvtColor(src, code);cv:指opencv,t:transform转变的意思,Color:色彩空间的意思。 -
参数说明:
- dst:转换后的图像。
- src:转换前的图像(原图像)。
- code:色彩空间转换码。
-
实例:

1.Opencv也提供了
cv2.COLOR_GRAY2BGR(从GRAY色彩空间转换到BGR色彩空间),虽然能转(转成的是三通道),但灰度图像是无法转换成彩色图像的,因为丢失了色彩的比例。2.当BGR三个通道的值相等时,图像就是灰度图像,但同样,灰度图像是无法转换为彩色图像的。所以,有时候别人单通道灰度图像使用不方便时,就利用BGR色彩空间中的三通道的灰度图像。
1-3.HSV色彩空间
HSV色彩空间是基于色调(hue)、饱和度(saturation)和亮度(value)的;
色调是指光的颜色,在[0, 180]内取值,例如红橙黄绿青蓝紫等;红绿蓝色调分别为0、60、120。
饱和度是指色彩的深浅,在[0, 255]内取值;0时,图像变为灰度图像。
亮度是指光的明暗,在[0, 255]内取值;0时,图像变为纯黑色。
-
HSV色彩空间转换到BGR色彩空间:
dst = cvtColor(src, code) -
参数说明:
- dst:转换后的图像。
- src:转换前的图像(原图像)。
- code:色彩空间转换码。
-
实例:

2.通道
2-1.拆分通道:split()方法
1.拆BGR色彩空间图像的通道
-
语法格式:
b, g, r = cv2.split(bgr_img) -
参数说明:
- b:B通道图像(像素)。
- g:G通道图像(像素)。
- r:R通道图像(像素)。
- bgr_img:一张BGR色彩空间图像。
-
实例:

会发现B、G、R三个通道显示的怎么是灰度图像呢?我看到有书上说是因为当程序执行到
cv2.imshow("B", b)时,原图像B、G、R这3个通道的值都会被修改位B通道的值,即(b, b, b)。但作者个人觉得有问题,b.shape=(W, H)是个单通道图像,opencv对单通道图像默认按照灰度图像处理;当输入三通道图像即shape为(W, H, 3)时,opencv默认按照BGR图像处理。
2.拆HSV色彩空间图像的通道
-
-
语法格式:
h, s, v = cv2.split(hsv_img) -
参数说明:
- h:h通道图像(像素)。
- s:s通道图像(像素)。
- v:v通道图像(像素)。
- hsv_img:一张hsv色彩空间图像。
-
实例:

要先将图像转换为HSV色彩空间!
-
2-2.合并通道:merge()方法
合并通道其实就是拆分通道的逆过程。
1.B、G、R 通道的合并
-
语法格式:
bgr_img = cv2.split([b, g, r]) -
参数说明:
- b:B通道图像(像素)。
- g:G通道图像(像素)。
- r:R通道图像(像素)。
- bgr_img:合并后的一张BGR色彩空间图像。
-
实例:

merge()合并时,也可以更换b、g、r顺序。如上图img3窗口。
2.H、S、V 通道的合并
-
语法格式:
hsv_img = cv2.split([h, s, v) -
参数说明:
- h:h通道图像(像素)。
- s:s通道图像(像素)。
- v:v通道图像(像素)。
- hsv_img:合并后的一张hsv色彩空间图像。
-
实例:

要对比原图的话,要将HSV色彩空间转换为BGR色彩空间。
3.B、G、R、A 通道的合并
opencv在BGR色彩空间的基础上,又增加了一个用来设置图像透明度的A通道,即alpha通道;这就构成了BGRA色彩空间。alpha在[0, 255]内取值,0为透明,255为不透明。
-
语法格式:
bgra_img = cv2.split([b, g, r,a]) -
参数说明:
- b:B通道图像(像素)。
- g:G通道图像(像素)。
- r:R通道图像(像素)。
- a:A通道图像(像素)。
- bgra_img:合并后的一张BGRA色彩空间图像。
-
实例:



1.由上面两图可知,只有png文件可以保存alpha通道的信息!
2.使用BGRA色彩空间时,imshow()方法可能看不到效果,可以先保存下来再看。
相关文章:
第四章 Opencv图像色彩空间与通道
文章目录1.色彩空间1-1.RGB/BGR色彩空间1-2.GRAY色彩空间1-3.HSV色彩空间2.通道2-1.拆分通道:split()方法1.拆BGR色彩空间图像的通道2.拆HSV色彩空间图像的通道2-2.合并通道:merge()方法1.B、G、R 通道的合并2.H、S、V 通道的合并3.B、G、R、A 通道的合并…...
《论文列表》持续更新中......
《论文列表》持续更新中......前言相关论文阅读说服对话系统 Persuasive Dialogue System情感知识对话 Emotional Support Conversation对话中的情感识别 Emotion Recognition in Conversation情感对话生成 Emotional Response Generation多模态融合情感识别或情感生成 Multimo…...
空间中任意一点到球的截面的最短距离
假设球的球心坐标为Oball{x0,y0,z0}O_{ball}\{x_0,y_0,z_0\}Oball{x0,y0,z0},球的半径为rrr,球的方程为(x−x0)2(y−y0)2(z−z0)2r2(x-x_0)^2(y-y_0)^2(z-z_0)^2r^2(x−x0)2(y−y0)2(z−z0)2r2球的一截面的方程为AxByCz10AxByCz10AxByCz10…...
麦克斯韦方程场分量公式推导
今天看书的时候遇到了一个关于公式推导的问题,阅读该篇前推荐优先阅读—点乘与叉乘是否满足结合律。 已知: E ⃗ t = i k n 2 (...
freertos学习之路6-任务创建和删除
写在最前 由于工作需要,需要开始学习freertos的相关知识,本专题主要记录freertos的相关内容 参考: https://www.bilibili.com/video/BV19g411p7UT 正点原子视频 1. 简介 和一般的OS不同(linux/windows),在…...
科都电气创业板IPO终止:曾计划募资约6亿元,郑春开等学历较低
近日,深圳证券交易所披露的信息显示,科都电气股份有限公司(下称“科都电气”)提交了撤回首次公开发行股票并在创业板上市申请文件的申请,同时保荐机构撤回对该公司的保荐。 因此,深圳证券交易所决定终止对…...
【MySQL】第十六部分 MySQL数据类型详解
【MySQL】第十六部分 MySQL数据类型详解 文章目录【MySQL】第十六部分 MySQL数据类型详解16. MySQL数据类型详解16.1 整数类型16.2 浮点类型16.3 定点数类型16.4 位类型 BIT16.5 日期和时间类型16.6 文本字符串类型16.6.1 CHAR VS VARCHAR类型16.6.2 TEXT类型16.6.3 ENUM类型16…...
Linux手工创建新用户
准备工作(配置流程的理解) Linux中useradd命令即一系列文件操作的结合体,所以我们可以通过查看useradd命令来确认我们手工创建新用户需要完成的文件配置 找到man useradd中涉及的文件部分 对于手工创建用户有用的文件: /etc/pas…...
K_A12_003 基于STM32等单片机采集光敏二极管模块参数 串口与OLED0.96双显示
K_A12_003 基于STM32等单片机采集光敏二极管模块参数 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC光敏二极管模块1.2、STM32F103C8T6光敏二极管模块五、基础知识…...
天才少年稚晖君
稚晖君 简介主要成就华为天才少年简介 彭志辉,1993年出生于江西吉安,科技圈知名KOL,人称“稚晖君”“野生钢铁侠”,原华为天才少年。 2015年本科毕业于电子科技大学生命科学与技术学院;2018年研究生毕业于电子科技大学信息与通信工程学院;毕业后就职于OPPO研究院AI实验…...
【Linux command 09】tcpdump 命令
tcp一款sniffer工具,是Linux上的抓包工具,嗅探器语法tcpdump (选项)选项-c: 指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包…...
初始结构体
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🏡前言 🐰结构体的基础知识 🐰结构体的声明 &#x…...
English Learning - Day56 作业打卡 2023.2.10 周五
English Learning - Day56 作业打卡 2023.2.10 周五引言1. 他把车停错了地方,因此被罚了款。2. 这个事我越想越生气。3.他在这工作的时间比我长。4. 没有奋斗,就不会变强大。5.我一到北京就给你打电话。6. 直到我有了孩子,才意识到我的父母有…...
Python中五个不常见的隐晦用法小结
1. 引言 我已经用Python编程5年了(从2017年开始),直到最近才知道以下几个Python中不常见的用法,确实和人们对直观理解有所出入。 闲话少说,我们直接开始吧! 2. 类中的私有变量不是真正的私有 我们直接上…...
SharkTeam:Move合约开发与合约安全
近期,围绕 Aptos 和 Sui,新兴的高性能 L1链 以及这些新链背后的 Move 智能合约编程语言引起了很多关注,社区也非常活跃,很多开发者和项目已经开始积极转向 Move。但Move相对Solidity差别较大,即使是相对比较接近的Rust…...
一篇文章学习什么是进程(万字解析,超多知识点)
目录进程概念进程控制块-PCBPCB的内容分类标识符查看进程信息的方法状态fork函数进程状态R运行状态(running)S睡眠状态(sleeping)D磁盘休眠状态(Disk sleep)T停止状态(stopped)X死亡…...
第01章_数据库概述
第01章_数据库概述 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#x…...
我所理解的高通UEFI之display的流程和移植
UEFI的流程UEFI跟uboot一样在OS加载启动之前,正确的指定启动服务,并向内核传递信息,代替原先的uboot。它包含了上电、驱动实现,以及os环境的建立和应用程序(类似于fastboot)。这个os是UEFI自己独立运行独有…...
iozone -a fsync: I/O error
iozone -a fsync: I/O error iozone: interrupted exit iozone 问题表现是手机老化后重启不开机。检查不开机Log,发现/data/system/packages.xml文件有损坏,pull 离线日志,发现出问题前后的日志也不能pull,pull出来的离线日志解压…...
Element UI框架学习篇(五)
Element UI框架学习篇(五) 1 准备工作 1.1 在zlz包下创建数据传输对象类EmpDTO package com.zlz.dto;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;//根据前台来的 Data public class EmpDTO {private String name;private Stri…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
LeetCode 0386.字典序排数:细心总结条件
【LetMeFly】386.字典序排数:细心总结条件 力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...
记一次spark在docker本地启动报错
1,背景 在docker中部署spark服务和调用spark服务的微服务,微服务之间通过fegin调用 2,问题,docker容器中服务器来后,注册中心都有,调用服务也正常,但是调用spark启动任务后报错,报错…...
安宝特方案丨从依赖经验到数据驱动:AR套件重构特种装备装配与质检全流程
在高压电气装备、军工装备、石油测井仪器装备、计算存储服务器和机柜、核磁医疗装备、大型发动机组等特种装备生产型企业,其产品具有“小批量、多品种、人工装配、价值高”的特点。 生产管理中存在传统SOP文件内容缺失、SOP更新不及、装配严重依赖个人经验、产品装…...
