//指定波长转换成RGBA颜色
std::vector<int> lambdaToColor(double lambda,double gamma = 0.8,double intensityMax = 255.0)
{double r, g, b, alpha;if (lambda >= 380.0 && lambda < 440.0) {r = -1.0 * (lambda - 440.0) / (440.0 - 380.0);g = 0.0;b = 1.0;}else if (lambda >= 440.0 && lambda < 490.0) {r = 0.0;g = (lambda - 440.0) / (490.0 - 440.0);b = 1.0;}else if (lambda >= 490.0 && lambda < 510.0) {r = 0.0;g = 1.0;b = -1.0 * (lambda - 510.0) / (510.0 - 490.0);}else if (lambda >= 510.0 && lambda < 580.0) {r = (lambda - 510.0) / (580.0 - 510.0);g = 1.0;b = 0.0;}else if (lambda >= 580.0 && lambda < 645.0) {r = 1.0;g = -1.0 * (lambda - 645.0) / (645.0 - 580.0);b = 0.0;}else if (lambda >= 645.0 && lambda <= 780.0) {r = 1.0;g = 0.0;b = 0.0;}else {r = 0.0;g = 0.0;b = 0.0;}//在可见光谱的边缘处强度较低。if (lambda >= 380.0 && lambda < 420.0) {alpha = 0.30 + 0.70 * (lambda - 380.0) / (420.0 - 380.0);}else if (lambda >= 420.0 && lambda < 701.0) {alpha = 1.0;}else if (lambda >= 701.0 && lambda < 780.0) {alpha = 0.30 + 0.70 * (780.0 - lambda) / (780.0 - 700.0);}else {alpha = 0.0;}//1953年在引入NTSC电视时,计算具有荧光体的监视器的亮度公式如下int Y = static_cast<int>(0.212671*r + 0.715160*g + 0.072169*b);//伽马射线 gamma//照明强度 intensityMaxint R = r == 0.0 ? 0 : static_cast<int>(std::round(intensityMax * std::pow(r * alpha, gamma)));int G = g == 0.0 ? 0 : static_cast<int>(std::round(intensityMax * std::pow(g * alpha, gamma)));int B = b == 0.0 ? 0 : static_cast<int>(std::round(intensityMax * std::pow(b * alpha, gamma)));int A = static_cast<int>(alpha);return std::vector<int>{R, G, B, A, Y};
}

转载于:https://www.cnblogs.com/cheungxiongwei/p/9181456.html

如何转换指定 波长 到 RGB 颜色?相关推荐

  1. RGB颜色转换成16bit颜色

    RGB颜色是一个DWORD值,32bit,格式为0x00rrggbb,通过三个宏:GetRValue.GetGValue和GetBValue可以得到三个颜色分量,用8bitBYTE表示.16bit颜色 ...

  2. RGB颜色转换十六进制颜色

    RGB颜色转换为十六进制颜色:     十六进制颜色转换为RGB颜色:     十六进制颜色查询 颜   色 英文代码 形象描述 十六进制 RGB   LightPink 浅粉红 #FFB6C1 25 ...

  3. rgb颜色查询工具_《我的眼睛–图灵识别》第三章:基础:颜色识别

    <我的眼睛–图灵识别>第三章:基础:颜色识别 七色彩虹 漂亮的彩虹是一种光学现象,使用三棱透镜进行折射就能看到七色彩虹.它分别由红.橙.黄.绿.青.蓝.紫7种颜色组成.色彩按字面含义上理解 ...

  4. rgb颜色分量的旋转_RGB分量之偏色与彩色图片转黑白

    颜色对于制作脚本来说是至关重要的,找图找字找色都需要使用到颜色.所以,对颜色的认识是也是非常重要的. 颜色知识大解剖 [ 颜色是由三原色混合形成的] * 即红.绿.蓝.三原色可以混合出所有的颜色. * ...

  5. 【电路方案】基于单片机智能市电温度控制系统设计-基于单片机RGB颜色智能识别系统设计-基于单片机四路红外遥控开关电路设计-基于单片机自行车自动防盗报警系统设计-基于单片机智能无线病床呼叫系统设计

    822基于单片机智能无线病床呼叫系统设计-设计资料下载 硬件构成:单片机+最小系统+LCD1602液晶显示模块+无线收发模块+蜂鸣器模块+LED指示灯模块+按键模块 本设计基于STC89C51/52( ...

  6. python的turtle怎么设置rgb颜色_Python : turtle色彩控制实例详解

    ? 1 turtle.pencolor(* args ) 返回或设置pencolor. 允许四种输入格式: ? 1 pencolor() 将当前的pencolor返回为颜色规范字符串或元组(参见示例) ...

  7. VB 设置ListView中指定一行的背景颜色

    代码如下: 'SetListViewBGColor(ListView控件名称,要设置的背景颜色行号,颜色值-默认:&HB6B4FF) Public Sub SetListViewBGColor ...

  8. 计算色光叠加的RGB颜色的alpha值

    两个rgb颜色,在做透明或参入效果的色光叠加的时,需要设定一个alpha数值来调整透明或色彩参透的效果.由于需要取出一叠加的两个色彩在叠加时的alpha值,顺手做了一个在线小工具来反向计算alpha数 ...

  9. Windows核心编程_获取鼠标指定位置的RGB颜色值

    Windows核心编程_获取鼠标指定位置的RGB颜色值 大家平常会见到很多屏幕取色工具,其原理都是获取鼠标位置的屏幕像素点颜色! 一般思路都是:获取鼠标位置,然后取出鼠标指向的屏幕像素点颜色! Get ...

最新文章

  1. 【博士论文】分形计算系统
  2. Matlab保存为unv,matlab之图像处理(2)
  3. web js基础3 事件
  4. ArcSDE数据库、文件地理数据库和个人地理数据库的区别
  5. Python版——博客网站四 编写日志创建页
  6. 用 Python+openpose 实现抖音尬舞机
  7. ORACLE中的自治事务
  8. Java 服务端乱象大盘点
  9. LVS DR模型详解
  10. 用户关闭浏览器页器,弹出一个提示
  11. 使用matplotlib绘制K线图以及和成交量的组合图
  12. java实现端口扫描
  13. Dockerfile概念简介
  14. qq邮箱imtp收件服务器,邮件客户端和手机设置QQ邮箱IMAP服务
  15. 我的世界服务器皮肤修改,万用皮肤补丁CustomSkinLoader
  16. 四川眉山中院宣判两起特大跨国电信诈骗案
  17. android 源码编译 模拟器emulator启动
  18. 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  19. vue通过子组件修改父组件prop的几种实现方式
  20. Unity3d模型渲染灯光黑暗问题解决

热门文章

  1. 在winform嵌入外部应用程序
  2. C和C++中include 搜索路径的一般形式以及gcc搜索头文件的路径
  3. Java第八天听课总结--jar 包的使用(1)
  4. docker环境配置
  5. 不同频率数据的处理方法
  6. 我去,剑桥硕士重委员会可还行~我颤抖地拿起了ethz的课程描述
  7. C++数组与指针回顾总结
  8. hello2 source analysis
  9. ES6:Reflect
  10. 用掘金-Markdown 编辑器写文章