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)、绿(…...
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: 下载地址ÿ…...
Controller 层优化四步曲
Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
