颜色空间RGB与 色调、饱和度、亮度(ESL)转换的完整C语言算法
2014-12-25 18:29
1311 查看
2013-02-14 02:06匿名 | 分类:C/C++ | 浏览2402次
分享到:
2013-02-14 04:48
天天爱答题,抽奖送惊喜~
提问者采纳
提问者评价
在WINDOWS颜色编辑的对话框里面右下方有两列,6个编辑框,分别显示色调(E)、饱和度(S)、亮度(L)和RGB颜色分量值。 注意到 E、S、L三者的取值范围都是0~240,R、G、B是0~255 急求ESL转RGB的C算法或数学计算方法。暂时不需要相关理论,只急着用! 满意再加10分 由ESL三个值得到RGB三值得C算法....................
分享到:
2013-02-14 04:48
天天爱答题,抽奖送惊喜~
提问者采纳
你把0-240 按比例 缩放 一下 到 HSL 的 范围,用 HSL-RGB 转换。 HSL--H是色相(0到360度),S是饱和度(0到1),L是亮度(0到1) 规1化的 HSL到RGB颜色值算换子程序: // nomorized h,s,L 0-1.0 void HSL2RGB(double h, double s, double L,unsigned char *rr, unsigned char *gg, unsigned char *bb) { double v,m,sv, vs0, c1, c2,xiaoshu,r,g,b; int ih; r = L; g = L;b = L; if (L <= 0.5) v = L * (1.0 + s); else v = L + s - L * s; if (v > 0) { m = L + L - v; sv = (v - m ) / v; h = h * 6.0; ih = (int)h; xiaoshu = h - ih; vs0 = v * sv * xiaoshu; c1 = m + vs0; c2 = v - vs0; switch (ih) { case 0: r = v; g = c1; b = m; break; case 1: r = c2; g = v; b = m; break; case 2: r = m; g = v; b = c1; break; case 3: r = m; g = c2; b = v; break; case 4: r = c1; g = m; b = v; break; case 5: r = v; g = m; b = c2; break; default: break; } } *rr = (int) (r * 0xff); *gg = (int) (g * 0xff); *bb = (int) (b * 0xff); } 把你3个数值,各除以240,代入子程序即可。 详见:http://hi.baidu.com/svjvcfwticdkmse/item/e6c43a21e385b10977272c0e 彩虹光谱RGB值自动生成程序 (L_o_o_n_i_e == 金色潜鸟)
提问者评价
多谢!再加10分
相关文章推荐
- RGB颜色空间与Lab颜色空间区别与联系(附转换代码)
- 颜色空间RGB与HSV(HSL)的转换
- HSV与RGB颜色空间的转换
- 颜色空间系列2: RGB和CIELAB颜色空间的转换及优化算法
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- 颜色空间系列1: RGB和CIEXYZ颜色空间的转换及相关优化
- 数字图像处理 颜色空间RGB、HSI、CMYK、YUV的相互转换
- RGB与YCbCr颜色空间的转换
- Java 利用 ICC 色彩空间 color space profile 实现 RGB 和 CMYK 颜色的相互转换
- 颜色空间系列2: RGB和CIELAB颜色空间的转换及优化算法
- 颜色空间系列1: RGB和CIEXYZ颜色空间的转换及相关优化
- 颜色HSL(色调,饱和度,亮度)
- HSV颜色空间 与 RGB 颜色空间的相互转换
- 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图
- RGB与YCbCr颜色空间的转换
- 颜色空间RGB与HSV(HSL)的转换
- HSI颜色空间和RGB颜色空间之间的相互转换
- 颜色空间系列3: RGB和YDbDr颜色空间的转换及优化算法
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
- 数字图像处理 颜色空间RGB、HSI、CMYK、YUV的相互转换