关于WS2812上RGB与HSV转换函数实现
关于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转换函数实现相关推荐
- STC32G12K128-Beta WS2812控制 RGB与HSV互相转换
ws2812控制代码 void WS2812_bit(bit data_bit) {if(data_bit){LED=1;_nop_();_nop_();_nop_();_nop_();_nop_() ...
- OpenCV联合Image Watch使用中关于RGB和HSV转换相关知识点
在openCV开发中,为了方便调试过程观看图像,一般使用VS插件Image Watch. ImageWatch显示图片时,放到最大后,每个像素上有三个数字,从上到下依次为B.G.R通道值,如下图. 转 ...
- [计算机视觉]入门,光,RGB和HSV转换
我的博客:https://blog.csdn.net/qq_41806966 github地址:https://github.com/1711680493 点我进入github 进军 AI 界 什么是 ...
- php rgb,php颜色转换函数hex-rgb
一个很使用的php颜色转换函数,用于将hex表示的颜色值转换为rgb格式.例如:#dfdfdf转换成(239,239,239) 用法: var_dump(hex2rgb("#efefef&q ...
- RGB 到HSV转换 摘自wiki百科
从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...
- 音视频开发学习(三) -- RGB YUV HSV 颜色空间
文章目录 相关技术术语 颜色空间(色域) RGB YUV YUV 与 RGB 的联系 YUV 优点 HSV RGB和HSV转换(补充) RGB --> HSV HSV --> RGB 相关 ...
- 图片RGB转换为HSV
做毕业设计视频中人体移动的时候有阴影,用混合高斯去除背景的时候阴影也在,现在用的二值化(130,255)把阴影给去除了,想改进把视频弄成HSV去除阴影后再用混合高斯处理,提取出二值化(0,255)就可 ...
- MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)
1.颜色模型定义 2.各颜色模型简介 3.颜色模型的转换 一.颜色模型定义 颜色模型:某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色.例如,RGB颜色模型就是三维直角坐标颜色系统的一个 ...
- rgb转hsv java_RGB图像转换成HSV图像
HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...
最新文章
- linux 内核申请内存大小,linux内核常用的内存申请函数
- golang channel本质——共享内存
- 直接法光度误差导数推导
- C语言:L1-036 A乘以B (5分)
- Quadratic equation(二次剩余)2019牛客多校第九场
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建17 - 由投影重建图像、雷登变换、投影、反投影、反投影重建
- 类的无参方法和Doc注释
- 2014仲秋校招之面试篇
- 基于Swoole和beanstalkd实现多进程处理消息队列。
- 带农历万年历C语言程序,c语言万年历程序代码
- 三极管分压共射放大电路
- 解决fortify扫描出的Path Manipulation问题(java语言)
- 利用个人PC建设小型服务器
- CNN数据集——自己建立数据集要点
- JS三元表达式动态改变显示内容
- 流,向量场,和微分方程
- Oracle-数据库对象的使用
- 【聊天机器人】NLP知识
- 论文学习记录20200605:隐私保护神经网络推理[USENIX2020]
- maven-shade-plugin入门指南
热门文章
- 魔兽争霸攻击与防御关系 (经典版)
- 设置 按下电源按钮时锁定计算机,在这里设置在按下计算机电源按钮时下拉菜单...
- 吴恩达机器学习(十六)逻辑回归、简化代价函数、高级优化、多元分类
- matrix67 on a plane
- 通达信缠论买卖点公式_通达信缠论结构主图指标公式
- songtaste网站歌曲真实地址获取
- unturned服务器修改物品,不一样的批处理-用批处理做的Unturned服务器部署工具(开服器)!...
- Mysql 初级练习
- DBSwitch阉割版实现异构数据库表结构同步
- 关于python安装模块之后pychram仍然提示没有安装模块的问题