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(黄色)。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文简单回顾Java中的String、StringBuilder、StringBuffer

简单说下String、StringBuilder、StringBuffer的区别 String、StringBuffer、StringBuilder在Java中都是用于处理字符串的,它们之间的区别是String是不可变的,平常开发用的最多,当遇到大量字符串连接的时候,就用StringBuilder&am…

对游戏宣发的粗浅思考

1.两极分化 认真观摩了mgs系列制作人的x账号, 其更新频率吓死人,一天能发几十条之多,吓死人。大部分都是转发相关账号的ds2或mgs相关内容, 每日刻意的供给这些内容来满足几十万粉丝需求,维护热情。 幕后是专业的公…

【数据结构】空间复杂度

目录 一、引入空间复杂度的原因 二、空间复杂度的分析 ❥ 2.1 程序运行时内存大小 ~ 程序本身大小 ❥ 2.2 程序运行时内存大小 ~ 算法运行时内存大小 ❥ 2.3 算法运行时内存大小 ❥ 2.4 不考虑算法全部运行空间的原因 三、空间复杂度 ❥ 3.1空间复杂度的定义 ❥ 3.2 空…

实践网络安全:常见威胁与应对策略详解

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 在数字化转型的浪潮中,网络安全的重要性已达到前所未有的高度。无论是个人用户、企业,还是政府机构…

Tensor 基本操作2 理解 tensor.max 操作,沿着给定的 dim 是什么意思 | PyTorch 深度学习实战

前一篇文章,Tensor 基本操作1 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 目录 Tensor 基本操作torch.max默认指定维度 Tensor 基本操作 torch.max torch.max 实现降维运算,基于指定的 d…

图像处理之HSV颜色空间

目录 1 RGB 的局限性 2 HSV 颜色空间 3 RGB与HSV相互转换 4 HSV颜色模型对图像的色相、饱和度和明度进行调节 5 演示Demo 5.1 开发环境 5.2 功能介绍 5.3 下载地址 参考 1 RGB 的局限性 RGB 是我们接触最多的颜色空间,由三个通道表示一幅图像,分…

数据结构题目 课时9

题目 1、任何一个带权的无向连通图的最小生成树( )。 A. 只有一棵 B. 有一棵或多棵 C. 一定有多棵 D. 可能不存在 2、一个赋权网络如下图所示。从顶点 a 开始,用 Prim 算法求出一棵最小生成树。 3、请对下图的无向带权图按克鲁斯卡尔算法求…

Linux之详谈——权限管理

目录 小 峰 编 程 ​编辑 一、权限概述 1、什么是权限 2、为什么要设置权限 3、Linux中的权限类别- 4、Linux中文件所有者 1)所有者分类(谁) 2)所有者的表示方法 ① u(the user who owns it)(属主权限&…

私有包上传maven私有仓库nexus-2.9.2

一、上传 二、获取相应文件 三、最后修改自己的pom文件

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章:如何利用智谱全模态免费模型,生成大家都喜欢的图、文、视并茂的文章! MaxKB的Github下载地址 参考视频:【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…

4.flask-SQLAlchemy,表Model定义、增删查改操作

介绍 SQLAlchemy是对数据库的一个抽象 开发者不用直接与SQL语句打交道 Python对象来操作数据库 SQLAlchemy是一个关系型数据库 安装 flask中SQLAlchemy的配置 from flask import Flask from demo.user_oper import userdef create_app():app Flask(__name__)# 使用sessi…

jemalloc 5.3.0的tsd模块的源码分析

一、背景 在主流的内存库里,jemalloc作为android 5.0-android 10.0的默认分配器肯定占用了非常重要的一席之地。jemalloc的低版本和高版本之间的差异特别大,低版本的诸多网上整理的总结,无论是在概念上和还是在结构体命名上在新版本中很多都…

【Elasticsearch】Elasticsearch的查询

Elasticsearch的查询 DSL查询基础语句叶子查询全文检索查询matchmulti_match 精确查询termrange 复合查询算分函数查询bool查询 排序分页基础分页深度分页 高亮高亮原理实现高亮 RestClient查询基础查询叶子查询复合查询排序和分页高亮 数据聚合DSL实现聚合Bucket聚合带条件聚合…

DeepSeek R1有什么不同

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

macbook安装go语言

通过brew来安装go语言 使用brew命令时,一般都会通过brew search看看有哪些版本 brew search go执行后,返回了一堆内容,最下方展示 If you meant "go" specifically: It was migrated from homebrew/cask to homebrew/core. Cas…

文本左右对齐

hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function fullJustify(words, maxWidth) {// 用于存储最终排版好的每一行文本const result [];// 用于遍历单词数组的索引,初始化为 0let i 0;…

Oracle 创建用户和表空间

Oracle 创建用户和表空间 使用sys 账户登录 建立临时表空间 --建立临时表空间 CREATE TEMPORARY TABLESPACE TEMP_POS --创建名为TEMP_POS的临时表空间 TEMPFILE /oracle/oradata/POS/TEMP_POS.DBF -- 临时文件 SIZE 50M -- 其初始大小为50M AUTOEXTEND ON -- 支持…

树状数组讲解

文章目录 1395.统计作战单位数 树状数组b站博主 灵神博主 tree数组:Tree[i] 存储的是原本的数组中num[i - (i&-i)1]到nums[i]的和 更新的时候,num[i[更新,逐一修改num[i(i & -i)] 307.区间和检索-数组可修改 题目实战 总的代码&#…

PostGIS笔记:PostgreSQL中表、键和索引的基础操作

创建、查看与删除表 在数据库中创建一个表,使用如下代码: create table streets (id serial not null primary key, name varchar(50));这里的表名是streets,id是主键所以非空,采用serial数据类型,这个数据类型会自动…

【JavaEE进阶】图书管理系统 - 壹

目录 🌲序言 🌴前端代码的引入 🎋约定前后端交互接口 🚩接口定义 🍃后端服务器代码实现 🚩登录接口 🚩图书列表接口 🎄前端代码实现 🚩登录页面 🚩…