一、解决了什么问题:

求得两个颜色之间颜色渐变的RGB。

二、公式:

Gradient = A + (B-A) / Step * N
编程时为了提高效率避免浮点运算,往往把除法放在最后面,这样公式就成了:Gradient = A + (B-A) * N / Step

:Gradient表示第N步的R/G/B的值,A、B、Step表示从颜色A分Step步渐变为颜色B。

三、计算过程:

设Step=3,将RGB(200,50,0)颜色渐变为RGB(50,200,0),即:RGB(200,50,0)经过3次颜色渐变转为RGB(50,200,0)

第0次转换,即RGB(200,50,0)本身:
R0 = 200 + (50 - 200) / 3 * 0 = 200
G0 = 50 + (200 - 50) / 3 * 0 = 50
B0 = 0 + (0 - 0) / 3 * 0 = 0
RGB0 = (200, 50, 0)

第1次转换:
R1 = 200 + (50 - 200)/ 3 * 1 = 150
G1 = 50 + (200 - 50) / 3 * 1 = 100
B1 = 0 + (0 - 0) / 3 * 1 = 0
RGB1 = (150, 100, 0)

第2次转换:
R2 = 200 + (50 - 200)/ 3 * 2 = 100
G2 = 50 + (200 - 50) / 3 * 2 = 150
B2 = 0 + (0 - 0) / 3 * 2 = 0
RBG2 = (100, 150, 0)

第3次转换,即目标颜色RGB(50,200,0):
R3 = 200 + (50 - 200)/ 3 * 3 = 50
G3 = 50 + (200 - 50) / 3 * 3 = 200
B3 = 0 + (0 - 0) / 3 * 3 = 0
RBG3 = (50, 200, 0)

四、代码

import matplotlib.pyplot as plt
import numpy as npstep = 3   # 经过step步到达目标颜色
color_num = step + 1
one = np.ones(color_num)
from_rgb = (200,50,0)  # 起始颜色
to_rbg = (50,200,0)    # 目标颜色colors = [((from_rgb[0] + (to_rbg[0]-from_rgb[0])/step*i),(from_rgb[1] + (to_rbg[1]-from_rgb[1])/step*i),(from_rgb[2] + (to_rbg[2]-from_rgb[2])/step*i))for i in range(color_num)]for index, color in enumerate(colors):print(index, color)colors = [((from_rgb[0] + (to_rbg[0]-from_rgb[0])/step*i) / 255,(from_rgb[1] + (to_rbg[1]-from_rgb[1])/step*i) / 255,(from_rgb[2] + (to_rbg[2]-from_rgb[2])/step*i) / 255)for i in range(color_num)]plt.pie(one, labels=range(color_num), colors=colors)  # colors要求是0-1的浮点数
plt.show()

结果与颜色展示:

五、举一反三

下面对step、起始颜色、目标颜色进行修改,细分更多步骤的变化展示。

例1:
step = 50
from_rgb = (193, 214, 6)
to_rbg = (244, 225, 67)


例2:
step = 50
from_rgb = (244, 225, 67)
to_rbg = (227, 118, 0)

六、参考

  1. 颜色渐变的RGB计算

Python - 实现渐变色的RGB计算相关推荐

  1. 使用Python,Matplotlib显示RGB图像

    使用Python,Matplotlib显示RGB格式的 图像 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用matplotlib显示RGB图像.具体是使用matplotlib,pyplot和m ...

  2. python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析

    自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...

  3. 全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.Python 会有哪些最为独特的优势呢?又存在哪些让开发者无力的缺陷?在本文中,我们将 ...

  4. 2021-01-07 Python Opencv转换颜色空间 RGB转为HSV

    Python Opencv转换颜色空间 RGB转为HSV 举个例子,通过摄像头把视频中的蓝色区域凸显出来,剩余的颜色均为黑色 import numpy as npcap = cv2.VideoCapt ...

  5. 梯度、梯度法、python实现神经网络的梯度计算

    [机器学习]梯度.梯度法.python实现神经网络的梯度计算 一.python实现求导的代码: 二.what is 梯度 三.使用梯度法寻找神经网络的最优参数 四.神经网络的梯度计算 一.python ...

  6. Python数据分析学习笔记:计算向量夹角

    Python数据分析学习笔记:计算向量夹角 通过计算两个向量夹角了解两个向量之间的相关性. # 计算向量夹角import numpy as npdef included_angle(a, b):a_n ...

  7. Python数据分析学习笔记:计算相关系数

    Python数据分析学习笔记:计算相关系数 1.相关系数概念 相关系数,或称线性相关系数.皮氏积矩相关系数(Pearson product-moment correlation coefficient ...

  8. python怎么算积分_python计算积分

    python有多个方法计算积分,下面介绍其中三个,以下式为例: 方法一:直接用numpy计算 start = 1 stop = 2 length = 101 x = np.linspace(start ...

  9. python修改ABAQUS的inp计算文件

    python修改ABAQUS的inp计算文件 这里的函数可以与上一个博客Matlab-python-ABAQUS数据交互及联合使用的函数接口相互配合和集成,实现matlab与Abaqus进行联合仿真计 ...

最新文章

  1. android h5 多图上传源码,JS移动端/H5同时选择多张图片上传并使用canvas压缩图片...
  2. 洛谷P2380 狗哥采矿
  3. 12月22日 find命令
  4. boost::histogram::axis::transform用法的测试程序
  5. struts2 的国际化
  6. python elasticsearch update_使用python的elasticsearch部分更新
  7. 主动安全,新华三融合生态之力!
  8. 为什么base64编码的字符串的末尾有=符号
  9. linux 修改ssh密码_西部数码使用指南:弹性云linux系统通过控制台进入单用户重置ssh登陆密码(适用centos6)...
  10. 笑哭了!日本网友求助如何卸载360浏览器,过程堪比“ 拆弹 ”...
  11. 计算机 映射网络驱动器,映射网络驱动器
  12. 值得收藏!深度报告解读NB-IoT
  13. _stdcall,_cdecl区别
  14. 欧拉常数 Euler's constant
  15. 渗透测试-HTTP Strict Transport Security
  16. SaaSBase:免费的思维导图软件:2022年9种最好的工具
  17. OpenStack——开放栈(源自NASA的开源云管理软件)
  18. [论文阅读](不确定性系列)
  19. STM32中断优先级管理
  20. 居家隔离没事干?进来秒变算法工程师

热门文章

  1. oracle两个压缩包怎么解压,AIX下如何解压缩zip文件
  2. ICC 图文学习——LAB2:Design Planning 设计规划
  3. bitmap的六种压缩方式,Android图片压缩(转)
  4. C语言(PTA习题)7-3 数字三角形
  5. 软件设计工程——设计流程
  6. 计算一元二次方程(考虑实根虚根无解)
  7. c语言double可以代表整型么,C语言中整型变量(int)实型变量(float)双精度变量(double)到底是什么东西?有什么区...
  8. cpi 计算机体系结构 转移指令,计算机体系结构题目.ppt
  9. 报表解决方案Telerik Reporting发布R2 2019 SP1|支持MS Access
  10. vue使用脚手架的单文件组件环境搭建