关于WS2812上RGB与HSV转换函数实现

  • 关于WS2812
  • 关于HSV
  • 比较最大最小值的函数
  • RGB转换为HSV
  • HSV转换为RGB

关于WS2812

WS2812/2811只需一根信号线就能控制灯带上所有led。多个灯带间可以通过串联轻松延长。在30hz的刷新频率下一个信号线能够控制至多500个led。
WS2812B是我做嵌入式软件的第一个项目,这里资料参考了WS2812灯珠(四)—实现全彩呼吸灯效果,非常感谢这位博主给出的教程和相关源码,但是测试下来有些问题,自己检查修改了一下,在stm32f030f4上可以完美的跑起来。

关于HSV

HSV(Hue, Saturation, Value)是根据颜色的直观特性创建的一种颜色空间, 由 色调(H),饱和度(S),明度(V)三个参数组成,与传统的RGB相比它可以非常方便的通过调整明度来平滑的显示颜色亮度变化.

比较最大最小值的函数

static float min(float a, float b, float c)
{float m;m = a < b ? a : b;return (m < c ? m : c);
}static float max(float a, float b, float c)
{float m;m = a > b ? a : b;return (m > c ? m : c);
}

RGB转换为HSV

void rgb2hsv(uint8_t g, uint8_t r, uint8_t b, float *h, float *s, float *v)
{float red, green ,blue;float cmax, cmin, delta;red =   (float)r / 255;green = (float)g / 255;blue =  (float)b / 255;cmax = max(red, green, blue);cmin = min(red, green, blue);delta = cmax - cmin;/* H */if(delta == 0){*h = 0;}else{if(cmax == red){if(green >= blue){*h = 60 * ((green - blue) / delta);}else{*h = 60 * ((green - blue) / delta) + 360;}}else if(cmax == green){*h = 60 * ((blue - red) / delta + 2);}else if(cmax == blue){*h = 60 * ((red - green) / delta + 4);}}/* S */if(cmax == 0){*s = 0;}else{*s = delta / cmax;}/* V */*v = cmax;
}

HSV转换为RGB

void hsv2rgb(float h, float s, float v, uint8_t *g, uint8_t *r, uint8_t *b)
{if(s == 0){*r=*g=*b=v;}else{float H = h / 60;int hi = (int)H;float f = H - hi;float p = v * (1 - s);float q = v * (1 - f * s);float t = v * (1- (1 - f) * s);switch (hi){case 0:*r = (int)(v * 255.0 + 0.5);*g = (int)(t * 255.0 + 0.5);*b = (int)(p * 255.0 + 0.5);break;case 1:*r = (int)(q * 255.0 + 0.5);*g = (int)(v * 255.0 + 0.5);*b = (int)(p * 255.0 + 0.5);break;case 2:*r = (int)(p * 255.0 + 0.5);*g = (int)(v * 255.0 + 0.5);*b = (int)(t * 255.0 + 0.5);break;case 3:*r = (int)(p * 255.0 + 0.5);*g = (int)(q * 255.0 + 0.5);*b = (int)(v * 255.0 + 0.5);break;case 4:*r = (int)(t * 255.0 + 0.5);*g = (int)(p * 255.0 + 0.5);*b = (int)(v * 255.0 + 0.5);break;case 5:*r = (int)(v * 255.0 + 0.5);*g = (int)(p * 255.0 + 0.5);*b = (int)(q * 255.0 + 0.5);break;default:break;}}
}

关于WS2812上RGB与HSV转换函数实现相关推荐

  1. STC32G12K128-Beta WS2812控制 RGB与HSV互相转换

    ws2812控制代码 void WS2812_bit(bit data_bit) {if(data_bit){LED=1;_nop_();_nop_();_nop_();_nop_();_nop_() ...

  2. OpenCV联合Image Watch使用中关于RGB和HSV转换相关知识点

    在openCV开发中,为了方便调试过程观看图像,一般使用VS插件Image Watch. ImageWatch显示图片时,放到最大后,每个像素上有三个数字,从上到下依次为B.G.R通道值,如下图. 转 ...

  3. [计算机视觉]入门,光,RGB和HSV转换

    我的博客:https://blog.csdn.net/qq_41806966 github地址:https://github.com/1711680493 点我进入github 进军 AI 界 什么是 ...

  4. php rgb,php颜色转换函数hex-rgb

    一个很使用的php颜色转换函数,用于将hex表示的颜色值转换为rgb格式.例如:#dfdfdf转换成(239,239,239) 用法: var_dump(hex2rgb("#efefef&q ...

  5. RGB 到HSV转换 摘自wiki百科

    从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...

  6. 音视频开发学习(三) -- RGB YUV HSV 颜色空间

    文章目录 相关技术术语 颜色空间(色域) RGB YUV YUV 与 RGB 的联系 YUV 优点 HSV RGB和HSV转换(补充) RGB --> HSV HSV --> RGB 相关 ...

  7. 图片RGB转换为HSV

    做毕业设计视频中人体移动的时候有阴影,用混合高斯去除背景的时候阴影也在,现在用的二值化(130,255)把阴影给去除了,想改进把视频弄成HSV去除阴影后再用混合高斯处理,提取出二值化(0,255)就可 ...

  8. MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)

    1.颜色模型定义 2.各颜色模型简介 3.颜色模型的转换 一.颜色模型定义 颜色模型:某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色.例如,RGB颜色模型就是三维直角坐标颜色系统的一个 ...

  9. rgb转hsv java_RGB图像转换成HSV图像

    HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...

最新文章

  1. linux 内核申请内存大小,linux内核常用的内存申请函数
  2. golang channel本质——共享内存
  3. 直接法光度误差导数推导
  4. C语言:L1-036 A乘以B (5分)
  5. Quadratic equation(二次剩余)2019牛客多校第九场
  6. 第5章 Python 数字图像处理(DIP) - 图像复原与重建17 - 由投影重建图像、雷登变换、投影、反投影、反投影重建
  7. 类的无参方法和Doc注释
  8. 2014仲秋校招之面试篇
  9. 基于Swoole和beanstalkd实现多进程处理消息队列。
  10. 带农历万年历C语言程序,c语言万年历程序代码
  11. 三极管分压共射放大电路
  12. 解决fortify扫描出的Path Manipulation问题(java语言)
  13. 利用个人PC建设小型服务器
  14. CNN数据集——自己建立数据集要点
  15. JS三元表达式动态改变显示内容
  16. 流,向量场,和微分方程
  17. Oracle-数据库对象的使用
  18. 【聊天机器人】NLP知识
  19. 论文学习记录20200605:隐私保护神经网络推理[USENIX2020]
  20. maven-shade-plugin入门指南

热门文章

  1. 魔兽争霸攻击与防御关系 (经典版)
  2. 设置 按下电源按钮时锁定计算机,在这里设置在按下计算机电源按钮时下拉菜单...
  3. 吴恩达机器学习(十六)逻辑回归、简化代价函数、高级优化、多元分类
  4. matrix67 on a plane
  5. 通达信缠论买卖点公式_通达信缠论结构主图指标公式
  6. songtaste网站歌曲真实地址获取
  7. unturned服务器修改物品,不一样的批处理-用批处理做的Unturned服务器部署工具(开服器)!...
  8. Mysql 初级练习
  9. DBSwitch阉割版实现异构数据库表结构同步
  10. 关于python安装模块之后pychram仍然提示没有安装模块的问题