当前位置: 首页 > news >正文

WS2812 梳理和颜色表示方法的对比:RGB和HSV

WS2812

WS2812是一种可编程的LED灯,具有RGB显示效果,可显示的颜色数量为2^24。

常用颜色表示方法

表示方法:

  • RGB 表示
    • 加法混色原理:RGB 颜色模型基于加法混色原理,将红(Red)、绿(Green)、蓝(Blue)三种基本颜色按照不同的强度相加,来生成各种颜色。这三种颜色被称为三原色,它们相互独立,不能通过其他颜色混合得到。
    • 数值表示:在计算机中,通常用 0 到 255 之间的整数来表示每个颜色通道的强度。例如,(0, 0, 0) 表示没有任何颜色,即黑色;(255, 255, 255) 表示红、绿、蓝三种颜色都达到最强强度,混合后为白色。(255, 0, 0) 表示只有红色通道有强度,显示为纯红色;(0, 255, 0) 为纯绿色;(0, 0, 255) 为纯蓝色。对于其他颜色,如黄色是红色和绿色的等量混合,可表示为 (255, 255, 0);紫色是红色和蓝色的混合,可能表示为 (255, 0, 255) 等。
  • HSV 表示
    • 基于感知属性:HSV 颜色模型从人类感知颜色的角度出发,用色调(Hue)、饱和度(Saturation)和明度(Value)三个属性来表示颜色。
    • 具体含义及取值
      • 色调(Hue):用角度来表示,范围通常是 0° 到 360°。不同的角度对应不同的基本颜色,例如 0°(或 360°)代表红色,60° 代表黄色,120° 代表绿色,180° 代表青色,240° 代表蓝色,300° 代表品红色等。
      • 饱和度(Saturation):表示颜色的鲜艳程度,取值范围从 0% 到 100%。0% 表示颜色完全不饱和,即灰色;100% 表示颜色达到最鲜艳的状态。
      • 明度(Value):也称为亮度,取值范围从 0% 到 100%。0% 表示完全黑暗,即黑色;100% 表示颜色最亮,对于非黑色的颜色,明度越高,颜色越接近白色。例如,纯红色 (0, 100%, 100%) 是鲜艳的红色,而 (0, 100%, 50%) 则是较暗的红色。

操作方法对比:

  • RGB 操作方法
    • 颜色创建与混合:创建颜色时,直接指定红、绿、蓝三个通道的值。混合颜色时,通过对两个或多个颜色的 RGB 值进行算术运算来实现。例如,要混合颜色 A (200, 50, 30) 和颜色 B (30, 120, 200),可以将对应通道的值相加后取平均,得到混合后的颜色 C ((200 + 30) / 2, (50 + 120) / 2, (30 + 200) / 2)=(115, 85, 115)。
    • 颜色调整:调整颜色的某个属性时,需要分别对红、绿、蓝三个通道进行操作。比如要使一个颜色变亮,通常需要增加三个通道的值;若要改变颜色的色调,可能需要按照一定规则调整三个通道值的比例。但这种调整方式相对不直观,因为改变一个通道的值可能会同时影响颜色的多个视觉属性。
    • 应用场景中的操作特点:在图像处理软件中,当需要精确控制每个像素的颜色时,RGB 模型非常方便。例如,在 Photoshop 中进行图像绘制、颜色填充等操作时,可以直接在 RGB 模式下输入具体的数值来设置颜色。在计算机图形学中,绘制三维图形时,也经常使用 RGB 值来指定每个顶点的颜色。
  • HSV 操作方法
    • 颜色创建与混合:创建颜色时,先确定色调,即选择想要的基本颜色种类,然后再调整饱和度和明度来细化颜色。在混合颜色时,一般先考虑色调的混合关系,再根据需要调整混合后颜色的饱和度和明度。例如,混合红色 (0, 100%, 100%) 和绿色 (120, 100%, 100%),可以先取它们色调的中间值 60° 得到黄色调,然后根据混合比例和想要的效果调整饱和度和明度。
    • 颜色调整:调整颜色的某个属性非常直观。如果想要让颜色更鲜艳,直接增加饱和度;想要让颜色变亮或变暗,就调整明度;想要改变颜色的种类,只需要改变色调值。这种操作方式更符合人类对颜色的直观感受和调整习惯。
    • 应用场景中的操作特点:在一些需要用户交互选择颜色的场景中,HSV 模型更受欢迎。比如在网页设计的颜色选择器中,用户可以通过拖动滑块或点击色轮等方式,轻松地调整色调、饱和度和明度来选择所需的颜色。在图像颜色调整工具中,如 Lightroom 的色彩调整功能,也常采用 HSV 模型,方便用户根据自己的视觉感受对图像的颜色进行调整

WS2812 的颜色表示方法主要基于 RGB 颜色模型,通过对红(Red)、绿(Green)、蓝(Blue)三种基色的不同强度组合来表示各种颜色,具体如下:

颜色数据结构

  • WS2812 使用 24 位数据来表示颜色,按照 GRB 的顺序依次发送数据,每个颜色通道占用 8 位,即每个通道有 256 种不同的强度级别。这意味着可以组合出,即 16,777,216 种不同的颜色。
  • 例如,要表示纯红色,数据可能为0x00FF00,其中绿色通道为最大值 255(FF),红色和蓝色通道为 0;要表示白色,数据则为0xFFFFFF,即红、绿、蓝三个通道都为最大值 255。

颜色控制原理

  • 在实际控制中,通过向 WS2812 发送特定的 24 位数据来控制其显示的颜色。微控制器或其他控制设备按照通信协议,将表示颜色的 GRB 数据依次发送到 WS2812 的 DIN 引脚。
  • WS2812 接收到数据后,会解析其中的 GRB 值,并根据这些值来控制内部的红色、绿色和蓝色 LED 芯片的亮度,从而混合出相应的颜色。

与其他颜色模型的转换

  • 与 HSV 颜色模型的转换:虽然 WS2812 本身基于 RGB 颜色模型工作,但在实际应用中,有时可能需要在 HSV 和 RGB 之间进行转换。从 HSV 转换为 RGB 时,需要根据 HSV 的色相(H)、饱和度(S)和明度(V)值,通过特定的算法计算出对应的 RGB 值,再发送给 WS2812。例如,对于一个色相为 60 度、饱和度为 100%、明度为 100% 的颜色,转换为 RGB 后可能是0xFFFF00(黄色)。

 

相关文章:

WS2812 梳理和颜色表示方法的对比:RGB和HSV

WS2812 WS2812是一种可编程的LED灯,具有RGB显示效果,可显示的颜色数量为2^24。 常用颜色表示方法 表示方法: RGB 表示 加法混色原理:RGB 颜色模型基于加法混色原理,将红(Red)、绿&#xff08…...

JAVA实战开源项目:蜗牛兼职平台(Vue+SpringBoot) 附源码

本文项目编号 T 034 ,文末自助获取源码 \color{red}{T034,文末自助获取源码} T034,文末自助获取源码 目录 一、系统介绍1.1 平台架构1.2 管理后台1.3 用户网页端1.4 技术特点 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景…...

C++:多继承习题3

题目内容: 声明一个时间类Time,时间类中有3个私有数据成员(Hour,Minute,Second)和两个公有成员函数(SetTime和PrintTime)。要求: (1) SetTime根据传递的3个参数为对象设置时间; &a…...

【云安全】云原生-K8S-搭建/安装/部署

一、准备3台虚拟机 务必保证3台是同样的操作系统! 1、我这里原有1台centos7,为了节省资源和效率,打算通过“创建链接克隆”2台出来 2、克隆之前,先看一下是否存在k8s相关组件,或者docker相关组件 3、卸载原有的docker …...

06-AD向导自动创建P封装(以STM32-LQFP48格式为例)

自动向导创建封装 自动向导创建封装STM32-LQFP48Pin封装1.选则4排-LCC或者QUAD格式2.计算焊盘相定位长度3.设置默认引脚位置(芯片逆时针)4.特殊情况下:加额外的标记 其他问题测量距离:Ctrl M测量 && Ctrl C清除如何区分一脚和其他脚?芯片引脚是逆时针看的? 自动向导…...

linux监控脚本+自动触发邮件发送

linux脚本 需求: CPU 负载:使用 uptime 命令,我们可以清楚地了解系统的 CPU 负载情况。这个命令会显示系统在过去 1 分钟、5 分钟和 15 分钟的平均负载。高负载可能意味着系统正在处理大量的任务,可能会导致性能下降或服务响应延迟…...

【漫话机器学习系列】066.贪心算法(Greedy Algorithms)

贪心算法(Greedy Algorithms) 贪心算法是一种逐步构建解决方案的算法,每一步都选择当前状态下最优的局部选项(即“贪心选择”),以期望最终获得全局最优解。贪心算法常用于解决最优化问题。 核心思想 贪心选…...

代码随想录算法训练营第三十八天-动态规划-完全背包-279.完全平方数

把目标值当作背包容量,每个平方数当作物品,题目变更为装满指定容量的背包,最小用几个物品会不会出现拼凑不出来的情况?不会,因为有数字1,对任意正整数百分百能拼凑出来因此此题目与上一道题就变得一模一样了…...

ts 基础核心

吴悠讲编程 : 20分钟学会TypeScript 无废话速成TS https://www.bilibili.com/video/BV1gX4y177Kf...

在RHEL 8.10上安装开源工业物联网解决方案Thingsboard 3.9

在RHEL/CentOS/Rocky/AlmaLinux/Oracle Linux 8单节点上安装 备注: 适用于单节点 是否支持欧拉??? 前提条件 本指南描述了如何在RHEL/CentOS 7/8上安装ThingsBoard。硬件要求取决于所选的数据库和连接到系统的设备数量。要在单…...

linux通过deb包安装(命令模式)

通过下载deb包安装Chrome浏览器 - lyy19s Wikihttps://lyy1119.github.io/%E8%BD%AF%E4%BB%B6%E4%BD%BF%E7%94%A8/Linux/InstallChrome/...

「Unity3D」在Unity中使用C#控制显示Android的状态栏

Unity打包的Android默认都是全屏,如果想要在真机上显示状态栏,就需要额外设置,有两种方式: 第一种,使用Android的Java代码去控制,然后以插件的方式放到Unity中,被C#调用。第二种,使…...

LLM评估优化与新技术创新综述

标题:LLM评估优化与新技术创新综述 文章信息摘要: LLM评估与优化需要采用多维度方法,包括自动基准测试、人工评估和模型自评估。RAG技术通过结合外部知识库提升模型表现,量化技术则通过降低参数精度优化资源消耗。新兴技术如模型…...

【Git】使用笔记总结

目录 概述安装Git注册GitHub配置Git常用命令常见场景1. 修改文件2. 版本回退3. 分支管理 常见问题1. git add [中文文件夹] 无法显示中文问题2. git add [文件夹] 文件名中含有空格3. git add 触发 LF 回车换行警告4. git push 提示不存在 Origin 仓库5. Git与GitHub中默认分支…...

ZZNUOJ(C/C++)基础练习1000——1010(详解版)

目录 1000 : AB Problem C语言版 C版 1001 : 植树问题 C语言版 C版 1002 : 简单多项式求和 C语言版 C版 1003 : 两个整数的四则运算 C语言版 C版 1004 : 三位数的数位分离 C语言版 C版 补充代…...

搜狐Android开发(安卓)面试题及参考答案

ViewModel 的作用及原理是什么? ViewModel 是 Android 架构组件中的一部分,主要作用是在 MVVM 架构中充当数据与视图之间的桥梁。它负责为视图准备数据,并处理与数据相关的业务逻辑,让视图(Activity、Fragment 等)专注于展示数据和与用户交互。比如在一个新闻应用中,Vie…...

WPS数据分析000007

目录 一、分列 智能分列 出生日期 数值转换 公式不运算 二、数据对比 离职员工 新入职员工 都在职的员工 三、合并计算 四、拆分表格 合并表格 一、分列 智能分列 出生日期 数据求和 文本型数字左对齐;数值型数字右对齐 数值转换 方式一: 方…...

SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门

前言 在分布式系统中,雪崩效应(Avalanche Effect)是一种常见的故障现象,通常发生在系统中某个组件出现故障时,导致其他组件级联失败,最终引发整个系统的崩溃。为了有效应对雪崩效应,服务保护方…...

把markdown转换为pdf的方法

将 Markdown 文件转换为 PDF 有多种方法,以下是几种常见的方式: 1. 使用 VS Code 和 Markdown 插件 VS Code 是一款流行的代码编辑器,支持通过插件将 Markdown 转换为 PDF。 步骤: 安装 VS Code: 下载地址&#xff…...

Controller 层优化四步曲

Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...