OpenCvSharp从入门到实践-(04)色彩空间

目录

1、GRAY色彩空间

2、从BGR色彩空间转换到GRAY色彩空间

2.1色彩空间转换码

2.2实例 BGR色彩空间转换到GRAY色彩空间

3、HSV色彩空间

4、从BGR色彩空间转换到HSV色彩空间

4.1色彩空间转换码

4.2实例 BGR色彩空间转换到HSV色彩空间


1、GRAY色彩空间

 GRAY色彩空间通常指的是灰度图像,灰度图像是一种每个像素都是从黑到白,被处理为256个灰度级别的单色图像。这256个灰度级别分别用区间[0,255]中的数值表示,其中,“0”表示纯黑色,“255”表示白色,0~255之间的数值表示不同的亮度(即色彩的深浅程度)的深灰色或者浅灰色。

如下图,一副花朵图像的灰度图像

2、从BGR色彩空间转换到GRAY色彩空间

OpenCvSharp中使用Cv2.CvtColor方法,该方法用于转换图像的色彩空间,其函数如下:

public static void CvtColor(InputArray src, OutputArray dst, ColorConversionCodes code, int dstCn = 0)

摘要:
    Converts image from one color space to another

参数:
  src:
    The source image, 8-bit unsigned, 16-bit unsigned or single-precision floating-point

  dst:
    The destination image; will have the same size and the same depth as src

  code:
    The color space conversion code

  dstCn:
    The number of channels in the destination image; if the parameter is 0, the number
    of the channels will be derived automatically from src and the code

2.1色彩空间转换码

ColorConversionCodes.BGR2GRAY        从BGR色彩空间转换到GRAY色彩空间

ColorConversionCodes.RGB2GRAY        从RGB色彩空间转换到GRAY色彩空间

2.2实例 BGR色彩空间转换到GRAY色彩空间

代码如下:

Mat mat = Cv2.ImRead("test.jpg");
Cv2.ImShow("bgr", mat);
Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2GRAY);
Cv2.ImShow("gray", mat);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

虽然色彩空间类型转换是双向的,而且OpenCV也提供了ColorConversionCodes.BGR2GRAY(从BGR色彩空间转换到GRAY色彩空间)和ColorConversionCodes.GRAY2BGR(从GRAY色彩空间转换到BGR色彩空间)这两个转换码,但是灰度图像是无法转换成彩色图像的。这是因为在彩色图像转换成灰度图像的过程中,丢失了颜色比例。这些比例丢失了就再也找不回来了。

3、HSV色彩空间

BGR色彩空间是基于三基色而言,即红色、绿色、蓝色。而HSV色彩空间则是基于色调、饱和度和亮度而言的。

        色调(H)是指光的颜色,例如,彩虹中的赤,橙,黄,绿,青,蓝,紫分别表示不同的色调。在OpenCV中,色调在区间[0,180]内取值。例如,代表红色、黄色、绿色和蓝色的色调值分别为0、30、60和120。

        饱和度(S)值色彩的深浅。在OpenCV中,饱和度在区间[0,255]内取值。当饱和度为0时,图像将变为灰度图像。

        亮度(V)指光的明暗。与饱和度相同,在OpenCV中,亮度在区间[0,255]内取值。亮度值越大,图像越亮;当亮度值为0时,图像呈纯黑色。

4、从BGR色彩空间转换到HSV色彩空间

OpenCvSharp提供Cv2.CvtColor方法,该方法不仅可以从BGR色彩空间转换到GRAY色彩空间,还可以将图像从BRG色彩空间转换到HSV色彩空间。

4.1色彩空间转换码

ColorConversionCodes.BGR2HSV        从BGR色彩空间转换到HSV色彩空间

ColorConversionCodes.RGB2HSV        从RGB色彩空间转换到HSV色彩空间

4.2实例 BGR色彩空间转换到HSV色彩空间

代码如下:

Mat mat = Cv2.ImRead("test.jpg");
Cv2.ImShow("bgr", mat);
Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2HSV);
Cv2.ImShow("hsv", mat);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

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

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

相关文章

26、Spring是如何解决Bean的循环依赖?

Spring是如何解决Bean的循环依赖? 采用三级缓存解决的 就是三个Map ; 关键: 一定要有一个缓存保存它的早期对象作为死循环的出口 一级缓存:存储完整的Bean二级缓存: 避免多重循环依赖的情况 重复创建动态代理。三级缓…

Spring简单的存储和读取

前言 前面讲了spring的创建,现在说说关于Bean和五大类注解 一、Bean是什么? 在 Java 语⾔中对象也叫做 Bean,所以后⾯咱们再遇到对象就以 Bean 著称。这篇文章还是以spring创建为主。 二、存储对象 2.1 俩种存储方式 需要在 spring-conf…

FlinkSql-Temporal Joins-Lookup Join

说明 在 Flink SQL 中,Temporal Joins 是一种常见的数据关联操作,特别适用于处理包含时间维度的数据。Lookup Join 是 Temporal Joins 的一种类型,它允许将流数据与维表数据进行关联。使用场景如下: 实时维度关联: 当…

Python---文件备份案例

需求:用户输入当前目录下任意文件名,完成对该文件的备份功能(备份文件名为xx[备份]后缀,例如:test[备份].txt)。 思考: ① 接收用户输入的文件名 ② 规划备份文件名 ③ 备份文件写入数据 代码 # 1、接收用户输入的…

paddle detection整体结构

核心思想就是通过Yaml文件将主体模块和可拔插的模块组成一个完整的pipline. train.py流程解析: 初始化训练参数 1 parserArgsParser() #读取命令行传递参数,加载yaml文件参数 2 整合参数,检查参数配置是否正确 3 检查是否使用GPU加速 4 检查…

Ubuntu 18.04 ARM离线安装cifs-utils

1、环境说明 由于本地都是x86,不支持arm架构,所以用Docker容器下载离线包本地环境:Docker、Ubuntu 22.04.1 LTS x86(可上网)安装环境:Ubuntu 18.04.4 LTS arm(内网) 2、启动qemu-a…

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。 但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试&#xf…

[Verilog语法]:===和!==运算符使用注意事项

[Verilog语法]:和!运算符使用注意事项 1, 和 !运算符使用注意事项2,3, 1, 和 !运算符使用注意事项 参考文献: 1,[SystemVerilog语法拾遗] 和!运算符使用注意事项 2, 3,

机器学习入门(第五天)——决策树(每次选一边)

Decision tree 知识树 Knowledge tree 一个小故事 A story 挑苹果: 根据这些特征,如颜色是否是红色、硬度是否是硬、香味是否是香,如果全部满足绝对是好苹果,或者红色硬但是无味也是好苹果,从上图可以看出来&#…

数据可视化:用图表和图形展示数据

写在开头 在当今信息爆炸的时代,海量的数据如同一座沉默的宝库,等待着我们挖掘和理解。然而,这些庞大的数据集本身可能令人望而生畏。在这个时候,数据可视化成为了解数据、发现模式和传达信息的强大工具。本篇博客将带领你探索数据可视化的奇妙世界,学习如何在python中使…

91基于matlab的以GUI实现指纹的识别和匹配百分比

基于matlab的以GUI实现指纹的识别和匹配百分比,中间有对指纹的二值化,M连接,特征提取等处理功能。数据可更换自己的,程序已调通,可直接运行。 91M连接 特征提取 (xiaohongshu.com)

Windows 安装redis,设置开机自启动

Windows 安装redis,设置开机自启动 文章目录 Windows 安装redis,设置开机自启动下载, 解压到指定目录设置redis密码启动redis服务端停止redis服务端设置自启动 下载, 解压到指定目录 官网地址: https://redis.io/ 安装包下载地址: https://github.com/tporadowski/redis/relea…

NB-IoT BC260Y Open CPU SDK⑥ADC的应用

NB-IoT BC260Y Open CPU SDK⑥ADC的应用 1、BC260Y_CN_AA模块 ADC的介绍2、ADC相关API的介绍3、软件设计4、实例分析5、以下是调试的结果:1、BC260Y_CN_AA模块 ADC的介绍 BC260Y-CN QuecOpen 模块提供 2 个专用于 ADC(ADC0、ADC1)功能的 I/O 引脚。通过相应的 API函数可以直…

掌握Vue侦听器(watch)的应用

文章目录 🍁watch 的优缺点🍂Watch 优点🍂Watch 缺点 🍁watch 的用法🍂对象式 watch🍂函数式 watch 🍁代码示例🍂监听基本数据类型🍂监听复杂数据类型(Object…

GPLT(有空就写)

L2 - 047 锦标赛 思路: 将其放入一颗满二叉树上去考虑:从二叉树的最底层开始,每一轮比赛,为同一个祖先的左右两个儿子进行比较,而你需要将败者的能力值填到左右两个儿子其中一个上面,另一个就向上传递表示胜…

Day51:503.下一个更大元素II、42. 接雨水

文章目录 503.下一个更大元素II思路代码实现 42. 接雨水思路代码实现 503.下一个更大元素II 题目链接 思路 这道题和下一个更大元素 I的不同之处在于这个查找是循环的。 循环直接可以用查找两次来解决,所以题目步骤唯一不同的就是循环的终止位置。 for(int i1;i…

2023 IoTDB 用户大会倒计时 3 天 | 1 分钟让你了解 IoTDB!

叮叮!距离 2023 IoTDB 用户大会在北京与大家见面还有 3 天! 这场筹备已久的盛会,汇集了超 20 位大咖嘉宾带来的精彩议题,届时来自美国国家工程院、清华大学软件学院的产业大拿,与能源电力、钢铁冶炼、城轨运输、智能制…

【shell】正则表达式和AWK

一.正则表达式 通配符匹配文件(而且是已存在的文件) 基本正则表达式扩展正则表达式 可以使用 man 手册帮助 正则表达式:匹配的是文章中的字符 通配符:匹配的是文件名 任意单个字符 1.元字符(字符匹配&…

NOIP2007提高组第二轮T3:矩阵取数游戏

题目链接 [NOIP2007 提高组] 矩阵取数游戏 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n m n \times m nm 的矩阵,矩阵中的每个元素 a i , j a_{i,j} ai,j​ 均为非负整数。游戏规则如下: 每次取数时须从每行各取走一…

恒驰服务 | 华为云云上运维服务offering

恒驰运维服务主要针对运维要求高或自身运维能力有限的客户,通过服务增购的形式,提供运维服务以协助客户做好云上资源运维管理,规避业务风险,降低运维开销,提升客户业务稳定性。 适用场景: 如何保障业务稳定…