当前位置: 首页 > 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 层的代码往往会变得臃肿且难以维护。 …...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...