文章目录

  • 需求描述
  • 代码示例
  • 色板参考
  • 参考链接

需求描述

最近有一个需求,在图像上画目标框的时候,有些类别的框需要用冷色调,有些类别的框需要用暖色调,但是不同实例的框颜色需要有差异。如果用随机数生成颜色,有时候不够美观,所以就想到从 matplotlib 的 colormap 中选取一些漂亮的颜色组合。

简单来说,就是写一个函数,用来生成指定数量的颜色列表,所有颜色从某一指定风格的色板中提取

例如下图:从这个风格的colormap中,等间隔提取若干个颜色。

也可以从冷色调、暖色调中提取所需要的颜色数值列表:

代码示例

主体思路就是,选择一个你觉得美观的 colormap 色板1,根据你需要生成的配色数量,用等间隔或者其他采样策略,去 colormap 去提取 rgb 颜色数值,顺便转成十六进制的颜色码2,输出 rgb_list 和 hex_list。

def RGB_to_Hex(rgb):"""RGB格式颜色转换为16进制颜色格式Args:rgb: tupleReturns:color: str"""RGB = list(rgb)color = '#'for i in RGB:num = int(i)color += str(hex(num))[-2:].replace('x', '0').upper()return colordef generate_colors(N=12,colormap='hsv'):"""生成颜色列表Args:N: 生成颜色列表中的颜色个数colormap: plt中的色表,如'cool'、'autumn'等Returns:rgb_list: list, 每个值(r,g,b)在0~255范围hex_list: list, 每个值为十六进制颜色码类似:#FAEBD7"""step = max(int(255/N),1)cmap = plt.get_cmap(colormap)rgb_list = []hex_list = []for i in range(N):id = step*i # cmap(int)->(r,g,b,a) in 0~1id = 255 if id>255 else idrgba_color = cmap(id)rgb = [int(d*255) for d in rgba_color[:3]]rgb_list.append(tuple(rgb))hex_list.append(RGB_to_Hex(rgb))return rgb_list,hex_list# 生成 6个冷色调的颜色
rgb_list,hex_list = generate_colors(6,'cool')
print(rgblist)
print(hexlist)

这段程序会输出我们需要的6个冷色调颜色,一个是rgb列表,一个是16进制颜色码列表:

代码中 cmap = plt.get_cmap(colormap) 可以获取matplotlib里的指定调色板(colormap)

我们按照所需的颜色数量N,等间隔去调色板中取色:rgba_color = cmap(step*i)

对tuple中的每个值乘以255,就能得到 r,g,b,a 的数值。

色板参考

matplotlib中的colormaps1


参考链接


  1. https://matplotlib.org/3.3.0/gallery/color/colormap_reference.html#sphx-glr-gallery-color-colormap-reference-py ↩︎ ↩︎

  2. https://blog.csdn.net/sinat_37967865/article/details/93203689 ↩︎

Python生成特定风格的配色组合相关推荐

  1. Python趣味编程 | 看看如何用Python生成素描风格的自拍照,并且加上Logo

    来源:关于数据分析与可 可能对于女生来说,有一张手绘风格的自拍照也是一件值得开心的事儿,或许对男生来说也是一样的道理,今天小编就来分享一下如何用Python来生成一张手绘风格的自拍照,并且加上我们所要 ...

  2. python 如何生成特定间隔数列?range()、numpy.arange()

    方法1: >>> range(0,10,2)[0,2,4,6,8] 方法2: >>> numpy.arange(1, 10, 2)[1 3 5 7 9] 参考文章: ...

  3. 5分钟教你用GANs生成CryptoPunks风格图像

    2021年,NFT数字艺术品和数字藏品迅速出圈,在这场浪潮中,2017年成立的"加密朋克"(CryptoPunks)项目因其收藏者的知名度和不断刷新的成交价,升值成为最具价值的收藏 ...

  4. 生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成

    描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数.. 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ...

  5. Python生成中文词云图(二):不可指定词云特定的形状和颜色。

    Python生成中文词云图(二):不可指定词云特定的形状和颜色. 什么是词云? 首先,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关 ...

  6. ACL 2020 | 特定风格标题生成《Hooks in the headline》论文阅读笔记

    写在前面 在一文详解生成式文本摘要经典论文Pointer-Generator中我们介绍了生成式摘要的经典模型,今天我们来分享一篇带风格的标题生成的经典工作 <Hooks in the Headl ...

  7. Python生成中文词云图(一):可指定特定的词云形状和颜色。

    Python生成中文词云图 什么是词云? 首先,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从 ...

  8. 互联网 4 大发明之二维码,你如何使用 Python 生成二维码?

    阅读文本大概需要 8 分钟. 新时代,人们有人信新的追求,自然而然会有新发明的诞生.去年,在"一带一路"国际合作高峰论坛举行期间, 20 国青年投票选出中国的"新四大发明 ...

  9. [转载] 如何使用 Python 生成酷炫的二维码?

    参考链接: Python | 使用pyqrcode模块生成QR码 新时代,人们有新的追求,自然而然会有新发明的诞生.去年,在"一带一路"国际合作高峰论坛举行期间,20 国青年投票选 ...

最新文章

  1. CEVA引入新的可配置传感器集线器DSP架
  2. Redis事件驱动库转
  3. python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
  4. Lua === Lua 十分钟基础入门上手
  5. JavaFX官方教程(八)之JavaFX中的动画和视觉效果
  6. js 获取url参数(QueryString)
  7. windows下手动安装pyinstaller(python2.7)
  8. java安卓6.0闪退_Android开发activity跳转闪退
  9. Eclipse : Android requires compiler compliance level 5.0 or 6.0.
  10. 读取.properties配置文件(转载)
  11. 楼板计算塑形弹性_阶梯教室板模板支架工程方案计算书(仅供参考)
  12. php excel parser pro v4.2,PHP Excel Parser Pro v4.2怎么用
  13. 计算机网络硬件开关win7,大师为你win7系统笔记本无线网络红叉电脑网络连接不可用的修复办法_...
  14. vue项目项目启动步骤及常见错误处理
  15. 数据平滑处理——log1p()和exmp1()
  16. VOA 2011-2-10
  17. excel删除无尽空白行_史上最简单的Excel工资条制作方法,实用收藏!
  18. 118.Python修炼之路【123-前端-JQuery样式操作】2018.08.01
  19. zkeacms mysql_在Docker中运行纸壳CMS并配置使用MySql
  20. C进阶(2)指针的进阶(1)

热门文章

  1. 将PHP文件生成静态文件源码
  2. Serverless 实战 —— 从 DevOps 到 Serverless
  3. JavaScript玩转机器学习:平台和环境
  4. Go语言的三元表达式
  5. 设置网格_500ETF网格设置
  6. #JAVA# 判断从键盘输入的字符串是否为回文
  7. webpack 生成dist,打zip包
  8. 【Java】计算1+1/2!+1/3!+1/4!....前20项
  9. C#LeetCode刷题之#54-螺旋矩阵(Spiral Matrix)
  10. golang中的variable和data types