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();
效果

相关文章:
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色彩空间通常…...
100.有序数组的平方(力扣)
代码解决一 class Solution { public:// 函数接受一个整数数组,返回每个元素平方值排序后的结果vector<int> sortedSquares(vector<int>& nums) {int len nums.size(); // 获取数组的长度vector<int> v; // 创建一个新的数组,用…...
微服务--01--简介、服务拆分原则
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 微服务微服务架构,是服务化思想指导下的一套最佳实践架构方案。服务化,就是把单体架构中的功能模块拆分为多个独立项目。 单体架构微服务架构…...
IntelliJ IDEA安装使用教程
IntelliJ IDEA是一个流行的Java 集成开发环境(IDE),由JetBrains公司开发。它是一款全功能的IDE,支持多种编程语言,如Java、Kotlin、Groovy、Scala、Python、JavaScript、HTML、CSS等等。IntelliJ IDEA 提供了高效的代码…...
校园门禁可视化系统解决方案
随着科技的持续进步,数字化校园在教育领域中的地位日益上升,各种智能门禁、安防摄像头等已遍布校园各个地方,为师生提供安全便捷的通行体验。然而数据收集分散、缺乏管理、分析困难等问题也逐渐出现,在这个数字化环境中࿰…...
rest_framework_django学习笔记一(序列化器)
rest_framework_django学习笔记一(序列化器) 一、引入Django Rest Framework 1、安装 pip install djangorestframework2、引入 INSTALLED_APPS [...rest_framework, ]3、原始RESTful接口写法 models.py from django.db import models 测试数据 仅供参考 INSERT INTO de…...
面试题:什么是负载均衡?常见的负载均衡策略有哪些?
文章目录 一、负载均衡二、负载均衡模型分类三、CDN负载均衡四、LVS负载均衡4.1 LVS 支持的三种模式4.1.1 DR 模式4.1.2 TUN 模式4.1.3 NAT 模式 4.2 LVS 基于 Netfilter 的框架实现 五、负载均衡策略是什么六、常用负载均衡策略图解6.1 轮询6.2 加权轮询6.3 最少连接数6.4 最快…...
精通Git(第2版)读书笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言第 1章 入门 11.1 关于版本控制 11.1.1 本地版本控制系统 1 第 2章 Git基础 132.1 获取Git仓库 132.1.1 在现有中初始化Git仓库 132.1.2 克隆现有仓库 14 2.2 在…...
XUbuntu22.04之OBS30.0设置录制音频降噪(一百九十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
渗透测试学习day4
文章目录 靶机:SequelTask1Task2Task3Task4Task5Task6Task7Task8 靶机:CrocodileTask1Task2Task3Task4Task5Task6Task7Task8Task9Task10 靶机:ResponderTask1Task2Task3Task4Task5Task6Task7Task8Task9Task10Task11 靶机:ThreeTas…...
Deepin使用记录-deepin系统下安装RabbitMq
目录 0、引言 1、由于RabbitMq是erlang语言开发的,所有需要先安装erlang 2、更新源并安装RabbitMq 3、安装完成之后,服务是启动的,可以通过以下语句查看状态 4、这样安装完成之后,是看不到web页面的,需要再安装一…...
【腾讯云云上实验室】用向量数据库——实现高效文本检索功能
文章目录 前言Tencent Cloud VectorDB 简介Tencent Cloud VectorDB 使用实战申请腾讯云向量数据库腾讯云向量数据库使用步骤腾讯云向量数据库实现文本检索 结论和建议 前言 想必各位开发者一定使用过关系型数据库MySQL去存储我们的项目的数据,也有部分人使用过非关…...
Pytorch中的gather的理解和用法
Pytorch中的gather的理解和用法 这个Gather的用法花费了点时间,我相信很多人一开始不太懂。 跟着我简单理解。 首先样例是: tensor([[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])然后index: [[2, 1, 0]]然后执行的代码: tensor_0.gather(0…...
唯创知音WTN6系列语音芯片:高音频采样率与精细音量控制赋能广泛应用
在语音芯片领域,唯创知音的WTN6系列语音芯片以其出色的性能和广泛的应用领域,无疑是行业的一颗璀璨明星。近期,该系列芯片实现了音频采样率32kHz的突破,以及16级音量控制的精细调节,进一步提升了其在各类应用中的表现。…...
机器人分类
从发展阶段分类: 1第一代机器人2第二代机器人3第三代机器人:智能型机器人。生于90年代。具有传感器,以前的机器人都不具有传感器 从控制方式分类:(我觉得这个分类好乱) 操作型机器人:可自动控…...
html/css中位置position的绝对位置absolute顺时针盒子案例图片排序
目标图片: Dreamweaver界面: 代码部分: <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css">.red{background-color:r…...
分享86个清新唯美PPT,总有一款适合您
分享86个清新唯美PPT,总有一款适合您 86个清新唯美PPT下载链接:https://pan.baidu.com/s/1QEaXeWAekCbAWDD0iTgvMw?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整…...
虚拟机系列:Oracle VM VirtualBox安装/更新/卸载出现 无法访问你试图使用的功能所在的网络位置
Oracle VM VirtualBox安装/更新/卸载出现 无法访问你试图使用的功能所在的网络位置 Oracle VM VirtualBox安装/更新/卸载出现 无法访问你试图使用的功能所在的网络位置Oracle VM VirtualBox安装/更新/卸载出现 无法访问你试图使用的功能所在的网络位置 在更新Oracle VM Virtua…...
【数据库】数据库并发控制的冲突检测,冲突可串行化的调度,保障事务的特性
冲突可串行化 专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新…...
java 对象大小计算
说明: 对于64位机:一个对象由三部分组成 对象头(object header) mark word :64bitkclass pointer :32bit(默认使用指针压缩),如果取消指针压缩( XX:-UseCompressedOops),则占用64bit数组长度:数…...
从Flatten到Hierarchy:数字IC后端工程师必须掌握的时序收敛技巧
从Flatten到Hierarchy:数字IC后端工程师必须掌握的时序收敛技巧 在22nm以下工艺节点,单芯片晶体管数量已突破10亿大关。面对如此庞大的设计规模,传统扁平化(Flatten)流程如同试图用绣花针建造摩天大楼——理论上可行&a…...
Python 如何反向 `enumerate` 遍历枚举
在 Python 中,enumerate() 是一个常用的内置函数,用于在遍历可迭代对象(如列表、元组、字符串等)时同时获取索引和值。但默认情况下,enumerate() 是从前往后遍历的。那么,**如何反向 enumerate 遍历&#x…...
从‘带不动’到‘跑满帧’:游戏玩家必懂的显示器带宽与接口选择避坑指南
从‘带不动’到‘跑满帧’:游戏玩家必懂的显示器带宽与接口选择避坑指南 刚入手一台2K 170Hz电竞显示器,却发现刷新率死活上不去?画面时不时出现撕裂或闪烁?别急着怀疑显卡性能,问题可能出在那根被你忽视的连接线上。…...
C语言开发者视角:Kandinsky-5.0-I2V-Lite-5s高性能推理引擎调用
C语言开发者视角:Kandinsky-5.0-I2V-Lite-5s高性能推理引擎调用 1. 引言:当静态告警遇上动态生成 想象一下这样的场景:工业监控系统捕捉到设备异常,触发静态告警图片。传统方案中,这张图片需要人工介入分析ÿ…...
GNSS数据处理避坑指南:从CDDIS、IGS等官网下载BSX、DCB文件的保姆级教程
GNSS数据处理避坑指南:从CDDIS、IGS等官网下载BSX、DCB文件的保姆级教程 第一次接触GNSS数据处理时,面对各种数据中心的复杂目录和神秘的文件命名规则,我完全懵了。记得当时为了找一个.BSX文件,整整花了两天时间在不同网站间来回切…...
智能抢购京东茅台:零基础上手的成功率提升指南
智能抢购京东茅台:零基础上手的成功率提升指南 【免费下载链接】jd_maotai 抢京东茅台脚本,定时自动触发,自动预约,自动停止 项目地址: https://gitcode.com/gh_mirrors/jd/jd_maotai 在电商抢购的激烈竞争中,这…...
项目管理和技术管理的区别
在单位从事管理岗快2年了,负责单位内的研发项目管理和技术管理工作。感觉这是两个不同的管理赛道。其中项目管理侧重进度、资源、风险、责任人、排期等要素推进和汇报。技术管理则侧重研发环节的技术深度、技术方向、技术领先性、技术栈,以及项目产出的质…...
如何免费构建个人游戏串流服务器:Sunshine开源方案完整指南
如何免费构建个人游戏串流服务器:Sunshine开源方案完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,让您…...
从PVT到CST:5种CiA402控制模式在机器人项目中的花式用法(附ROS2配置示例)
从PVT到CST:5种CiA402控制模式在机器人项目中的花式用法(附ROS2配置示例) 在工业机器人开发中,控制模式的灵活切换往往能解决80%的运动控制难题。当机械臂需要完成高精度装配时,CSP模式能保证微米级定位;执…...
Qwen3.5-9B图文对话实战:工业设备铭牌识别+参数查询+维保周期提醒
Qwen3.5-9B图文对话实战:工业设备铭牌识别参数查询维保周期提醒 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,特别适合工业场景下的图文对话应用。这个项目展示了如何利用其多模态能力,实现工业设备铭牌识别、参数查询和维保…...
