EmguCV学习笔记 VB.Net 2.1 颜色空间和颜色

news2024/11/17 12:57:02

 版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

EmguCV学习笔记目录 Vb.net

EmguCV学习笔记目录 C#

笔者的博客网址:VB.Net-CSDN博客

教程相关说明以及如何获得pdf教程和代码(博客上的教程内容会和pdf教程一致,教程中也会包含所有代码),请移步:EmguCV学习笔记

2.1 颜色空间和颜色http://blog.csdn.net/uruseibest

由于在图像讲解中会遇到颜色操作,这里有必要先简单学习颜色空间和颜色相关知识。

2.1.1 颜色空间

颜色空间,也称为色彩模型。彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。我们直接理解为

通常情况下,我们所见的颜色都可以用红色(R)、绿色(G)、蓝色(B)三种颜色按照不同比例混合而成,也就是RGB颜色空间。Vb.Net开发时,经常使用的也是RGB颜色空间,图像通道按照R-G-B的顺序排列。

图2-1 红绿蓝三原色

EmguCV也提供了RGB颜色空间,但是在使用EmguCV开发时,常使用的是BGR颜色空间,即与RGB相反的通道顺序。除此之外,EmguCV还提供了Gray、YCC、Hsv等多个颜色空间。

BGR颜色空间,使用蓝、绿、红三个通道来描述颜色。在EmguCV中,使用Image(Of Bgr Byte)来表示使用BGR颜色空间的图像。当使用Mat类来载入彩色图片时(使用ImreadModes.Color),就是用的BGR颜色空间,此时Mat类的对象包含3个通道,分别对应了蓝、绿、红。

Gray颜色空间,即灰度颜色空间,这是只有亮度信息而没有颜色信息的颜色空间,该颜色空间只有一个通道,使用数值0-255来划分表示,0表示纯黑色,255表示纯白色,0-255间是不同的灰度级别。此外,二值图像(即只有黑色和白色)在EmguCV中也是用Gray颜色空间来表示,但是此时只包含两个数值:0和255,0表示纯黑色,255表示纯白色。开发时,使用Image(Of Gray, Byte)类表示灰度颜色空间的图像。当使用Mat类来载入灰度图片时(使用ImreadModes.Grayscale),此时Mat类的对象仅有1个通道。RGB转为Gray的一个简易计算公式:

Gray = R * 0.3 + G * 0.59 + B * 0.11

YCC颜色空间,即YCbCr,在此颜色空间中,Y为颜色的亮度,Cb和Cr分别是蓝色和红色的色度。在EmguCV中,可以使用Image(Of Ycc, Byte)类表示YCC颜色空间的图像。RGB转为YCC的计算公式:

Y=0.299R+0.578G+0.114B

Cb=(-0.1687R-0.3313G+0.500B)+128

Cr=(0.500R-0.4187G-0.0813B)+128

HSV颜色空间,是一种比RGB颜色空间更直观的颜色空间,它使用色调(Hue)、饱和度(Saturation)和明度(Value)三个参数来描述颜色。在EmguCV中,可以使用Image(Of Hsv, Byte)类表示HSV颜色空间的图像。RGB转为YCC的计算公式比较复杂,这里不介绍,感兴趣的朋友请自行上网搜索。

2.1.2 颜色

MCvScalar是一种表示颜色或像素值的结构体。它用于指定像素的颜色和透明度,可以用于图像处理中的各种操作,如绘制图形、填充颜色、设置阈值等。

MCvScalar结构体包含4个浮点型成员变量:Val0、Val1、Val2和Val3,分别对应B(蓝色)、G(绿色)、R(红色)和Alpha通道的值。MCvScalar可以用于表示像素的颜色或灰度值,同时也可以用于表示图像的通道值。可以通过以下方式创建一个MCvScalar对象:

Dim color As New MCvScalar(B, G, R, Alpha)

其中,B、G、R和Alpha分别表示像素的蓝色、绿色、红色和透明度值,取值范围为0到255。

例如,下面的代码定义了红色:

Dim color As New MCvScalar(0, 0, 255) '红色

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

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

相关文章

威胁组织伪造Loom,Mac用户警惕AMOS窃取软件威胁

近期,一个复杂且可能与神秘威胁组织“Crazy Evil”有关联的网络犯罪活动,已将注意力转向了Mac用户群体。该组织利用广受欢迎的屏幕录制工具Loom作为掩护,悄无声息地传播着臭名远扬的AMOS数据窃取软件。Moonlock Lab的安全研究员们揭开了这一阴…

【数据结构与算法 | 图篇】拓扑排序

1. 概念 拓扑排序是是一种针对有向无环图进行的排序方法。它将图中所有顶点排成一个线性序列,使得对于图中的每一条有向边(u, v),顶点u在序列中都出现在顶点v之前。 适用范围: 拓扑排序只适用于有向无环图。 结果非唯一: 对于…

阿里云ubuntu系统安装mysql8.0

一、安装mysql8.0 1.已安装其他版本的mysql,需要删除 若没有不需要此操作 1 #卸载MySQL5.7版本 2 apt remove -y mysql-client5.7* mysql-community-server5.7* 4 # 卸载5.7的仓库信息 5 dpkg-l | grep mysql | awk iprint $2} | xargs dpkg -P2.更新仓库 apt u…

FASTSPEECH 2论文阅读

FASTSPEECH 2: FAST AND HIGH-QUALITY END-TOEND TEXT TO SPEECH 现状 非自回归模型可以在质量相当的情况下显著快于先前的自回归模型合成模型。但FastSpeech模型训练依赖与自回归教师模型进行时长预测(提供更多的信息作为输入)和知识蒸馏(…

【开端】Java中判断一个对象是否是空内容

一、绪论 在Java中,我们常常使用的到的就是封装,为什么要封装,封装有什么好处。首先在系统开发过程中,其实很多功能和场景都共性的。那么为了避免重复造轮子,我们这时就使用到了封装。封装可以一次造轮子,无…

数据集搜索

1. 数据集和数据集的分类 数据集是一组数据的集合,通常用于机器学习、统计分析、数据挖掘等领域,帮助算法训练、模型验证和评估。可以是各种形式的数据,如表格、图像、机器学习相关的文件等。 根据在机器学习中的应用,数据集可以…

1. MongoDB概念解析

1. 概念解析 在 MongoDB 中基本的概念是文档、集合、数据库。 SQL 术语/概念MongoDB 术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引table joins表连接,MongoDB不支持primary keypri…

1.3 数据库的发展历史与演变

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

鸿萌数据恢复服务: 如何修复 SQL Server 数据库错误 829?

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时,鸿萌是众多国际主流数据恢复软件(Stellar、UFS、R-Studio、ReclaiMe Pro 等)的授权代理商&#xff0c…

pandas 笔记crosstab

用来计算两个(或更多)因子的交叉表(即频率表、列联表或透视表)。这个功能特别适用于统计分析和数据探索阶段,帮助理解不同变量之间的关系 1 基本用法 pd.crosstab(index, columns, valuesNone, rownamesNone, colnam…

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(二)---ROS2与UE5进行图像数据传输

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博…

HarmonyOS-MPChart以X轴或y轴为区间设置不同颜色

本文是基于鸿蒙三方库mpchart OpenHarmony-SIG/ohos-MPChart 的使用,以X轴为区间设置不同的曲线颜色。 mpchart本身的绘制功能是不支持不同区间颜色不同的曲线的,那么当我们的需求曲线根据x轴的刻度区间绘制不同颜色,就需要自定义绘制方法了。…

LVS (Linux virual server)

LVS简介 LVS(Linux Virtual Server)是一个基于Linux平台的开源负载均衡系统。它通过将多个服务器组成一个虚拟服务器集群,实现了高效的负载均衡和流量分发。 LVS的核心思想是利用IP负载均衡技术和内容请求分发机制&a…

传知代码-【CLIP】文本也能和图像配对

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 概述 模态:数据的一种形式,如图像、文本、声音、点云等。 多模态学习,就是利用模型同时处理多个模态数据,有助于提高模型的准确性和泛化能力。在自动驾驶场景中&am…

利用住宅代理应对机器人流量挑战:识别、使用与检验指南

引言 什么是机器人流量?其工作原理是什么? 机器人流量来自哪里? 合法使用机器人时如何避免被拦截? 如何检验恶意机器人流量? 总结 引言 你是否曾经遇到过访问某个网站时,被要求输入验证码或完成一些其…

源代码加密的意义和办法?

一、源代码加密的意义1、防止恶意修改:未加密的源代码容易被恶意用户或竞争对手获取并修改,以植入恶意代码或病毒,损害软件的功能性和安全性。加密后的源代码即使被非法获取,也无法修改或理解,从而防止了被破坏的风险。…

品味白酒的四大步骤,体验不一样的美酒人生

在华夏千年的文化传承中,白酒如同一部厚重的历史长卷,每一滴都蕴含着丰富的故事与智慧。豪迈白酒(HOMANLISM),作为这长卷中的璀璨篇章,更是以其不同的魅力,吸引着无数品鉴者去探寻其中的奥秘。今…

android13 禁用wifi

总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 3.代码分析 3.1 代码位置1 3.2 代码位置2 3.3 代码位置3 4.代码修改 5. 彩蛋 1.前言 这个文章讲的是,在frameworks里面禁止打开wifi。 2.情况分析 我们打开wifi一般是 public static void turnOnWifi(Co…

Linux修改ssh默认端口22为其他端口2024

一、修改配置文件 修改ssh服务的配置文件: /etc/ssh/sshd_config 将Port 22放开注释,并将22修改为2024,并保存 二、重启sshd服务 systemctl restart sshd 三、重启服务失败 如果重启服务失败,可以执行以下命令: …

web 自动化测试,一定得掌握的 8 个核心知识点

使用 cypress 进行端对端测试,和其他的一些框架有一个显著不同的地方,它使用 javascript 作为编程语言。传统主流的 selenium 框架是支持多语言的,大多数 QA 会的python 和 java 语言都可以编写 selenium 代码,遇到需要编写 js 代…