第四章 Opencv图像色彩空间与通道

news2024/11/19 4:40:56

文章目录

    • 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()方法可能看不到效果,可以先保存下来再看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/338333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

M100嵌入式自动吞吐式读写器|电动读卡机如何通过C#程序读取社保卡号

M100嵌入式自动吞吐式读写器|电动读卡机是一款双保护门功能读卡器,第一层防尘防异物机械门,第二层电动门。 M100嵌入式自动吞吐式读写器|电动读卡机采用耐高温、耐磨擦、高强度、抗老化的复合型塑胶为主体,在走卡通道两侧镶有不锈钢金属&…

YUV数据和格式

一、YUV简介 1.YUV说明 YUV是一种颜色编码方法&#xff0c; 与RGB&#xff08;红 - 绿 - 蓝&#xff09;不同。 <1>Y表示亮度分量&#xff0c;也叫灰阶值&#xff1a;如果只显示Y&#xff0c;图片会是一张黑白照 <2>U&#xff08;Cb&#xff09;表示色度分量&…

2022年12月电子学会Python等级考试试卷(三级)答案解析

目录 一、单选题(共25题&#xff0c;共50分) 二、判断题(共10题&#xff0c;共20分) 三、编程题(共3题&#xff0c;共30分) 青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;三级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1. 列表L1中全是…

你知道ChatGPT能搞钱吗?哎呦喂,不知道,那没意思

这段时间&#xff0c;热度zui大的是什么&#xff1f;答案是—— &#x1f389;&#x1f389;ChatGPT&#x1f389;&#x1f389;。去年11月底上线&#xff0c;当时仅在AI和科技圈内小火了一把&#xff0c;没想到在今年春节后&#xff0c;火爆出圈。 ChatGPT的爆火&#xff0c;对…

微信小程序nodej‘s+vue警局便民服务管理系统

本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的开发心得在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括“最多跑一次”微信小程序的网络应用,在外国小程序的使用已经是很普遍的方…

java多线程开发

1.并发和并行 并发&#xff1a;同一时间段内多个任务同时进行。 并行&#xff1a;同一时间点多个任务同时进行。 2.进程线程 进程&#xff08;Process&#xff09;&#xff1a;进程是程序的一次动态执行过程&#xff0c;它经历了从代码加载、执行、到执行完毕的一个完整过程…

当资深程序员深夜去“打劫”会发生什么?——打家劫舍详解

文章目录一、前言二、概述三、打家劫舍第一晚四、打家劫舍第二晚五、打家劫舍第三晚......一、前言 大家好久不见&#xff0c;正如标题所示&#xff0c;今天我不打算聊一些枯燥的算法理论&#xff0c;我们来聊一聊程序员有多厉害&#xff01; 注意&#xff01;&#xff01;&am…

JDBC(新版)

文章目录JDBC概念优势总结JDBC核心api和使用路线涉及具体核心类和接口DriverManagerConnectionstatement、preparedstatement、callablestatementResult核心API使用步骤总结基于statement演示查询基于statement方式问题基于preparedstatement的优化基于preparedstatement的curd…

浅谈动态代理

什么是动态代理&#xff1f;以下为个人理解:动态代理就是在程序运行的期间&#xff0c;动态地针对对象的方法进行增强操作。并且这个动作的执行者已经不是"this"对象了&#xff0c;而是我们创建的代理对象&#xff0c;这个代理对象就是类似中间人的角色&#xff0c;帮…

【论文】基于AI边缘计算的铁路行车视频监控智能识别研究

本文转载自《科技与创新》2022年第01期 作者&#xff1a;李博&#xff0c; 杨欣 单位&#xff1a;中国铁路武汉局集团有限公司麻城车务段 摘要 随着铁路信息化建设的不断推进&#xff0c;视频监控设备应用到越来越多岗位中&#xff0c;运用智能化手段管理工作人员必将成为一…

BiseNet v1论文及其代码详解

来源&#xff1a;投稿 作者&#xff1a;蓬蓬奇 编辑&#xff1a;学姐 BiSeNet v1说明&#xff1a; 文章链接&#xff1a;https://arxiv.org/abs/1808.00897 官方开源代码&#xff1a;https://github.com/CoinCheung/BiSeNet &#xff08;本文未使用&#xff09; 文章标题&am…

宝塔搭建实战php开源likeadmin通用管理admin端vue3源码(二)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 上一期给大家分享了server端的部署方式&#xff0c;今天来给大家分享admin端在本地搭建&#xff0c;与打包发布到宝塔的方法。感兴趣的朋友可以自行下载学习。 技术架构 vscode node16 vue3 elementPlus vit…

1627_MIT 6.828 PC硬件与x86编程幻灯片资料阅读

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 按照MIT 6.828的计划表继续往下走&#xff0c;看到了一份需要看的阅读资料&#xff0c;也就是这次整理的这一份幻灯片。其实&#xff0c;为了解决之前的疑惑相关的…

4.5.7 HashMap

文章目录1.概述2.练习&#xff1a;字符串中字符统计3.Map与HashMap的比较4.HashMap扩容1.概述 HashMap底层是一个Entry[ ]数组,长度为16&#xff0c;当存放数据时,会根据hash算法来计算数据的存放位置 算法:hash(key)%n , n就是数组的长度,其实也就是集合的容量 当计算的位置没…

计算机网络-无线网络

文章目录前言无线局域网 WLAN无线局域网的组成移动自组网络无线传感器网络 WSN (Wireless Sensor Network)802.11 局域网的物理层802.11 局域网的 MAC 层协议WLAN无线控制器和FIT&#xff08;瘦&#xff09; AP总结前言 本博客仅做学习笔记&#xff0c;如有侵权&#xff0c;联…

Python-项目实战--飞机大战-敌机出场(6)

目标使用定时器添加敌机设计Enemy类1.使用定时器添加敌机敌机出现出现的规律&#xff1a;游戏启动后&#xff0c;每隔1秒会出现一架敌机每架敌机向屏幕下方飞行&#xff0c;飞行速度各不相同每架敌机出现的水平位置也不尽相同当敌机从屏幕下方飞出&#xff0c;不会再飞回到屏幕…

常见的历史漏洞之 weblogic+ Thinkphp5

数据来源 本文仅用于信息安全的学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若观众因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与本人无关。 01 Weblogic相关介绍 》Weblogic介绍 》Weblogic特征 》历史漏洞 02 Weblogic漏洞利…

代码覆盖率工具OpenCppCoverage在Windows上的使用

OpenCppCoverage是用在Windows C上的开源的代码覆盖率工具&#xff0c;源码地址为https://github.com/OpenCppCoverage/OpenCppCoverage &#xff0c;最新发布版本为0.9.9.0&#xff0c;License为GPL-3.0。 从https://github.com/OpenCppCoverage/OpenCppCoverage/releases 下载…

python制作贪吃蛇小游戏,畅玩无限制

前言 大家早好、午好、晚好吖 ❤ ~ 现在这年头&#xff0c;无论玩个什么游戏都有健康机制&#xff0c; 这让我们愉悦玩游戏得步伐变得承重起来&#xff0c; 于是无聊之下我写了个贪吃蛇小游戏&#xff0c;来玩个快乐 代码展示 导入模块 import random import sys import …

关于一笔画问题的一些思考(欧拉路Fleury算法、逐步插入回路法、以及另一种可能的解法)

前言这是一个经典的图论问题了最近复习离散的时候又恰好看到了&#xff0c;发现自己以前的解法似乎有点bug然后开始出反例卡自己&#xff0c;结果发现卡不掉&#xff1f;然后再好好想了想&#xff0c;发现这个看起来有问题的做法可能确实没问题。注意&#xff1a;欧拉路、欧拉回…