【问题标题】:how to get RGB numbers from a list如何从列表中获取 RGB 数字
【发布时间】:2022-10-14 22:42:19
【问题描述】:

我使用了 colorgram 库,并获得了 RGB 颜色代码列表。

[<colorgram.py Color: Rgb(r=80, g=97, b=85), 42.86094708532268%>,
 <colorgram.py Color: Rgb(r=34, g=48, b=37), 20.90975231208169%>,
 <colorgram.py Color: Rgb(r=29, g=26, b=18), 12.300570275661888%>]

我想像这样提取RGB数字的数量。

[[80, 97, 85], [34, 48, 37], [29, 26, 18]]

但是每个元素的类型都是'colorgram.cologram.Color',并且列表的长度是可变的。如何获得 RGB 数字?

【问题讨论】:

  • 如果你print(colorgram.color.Color.__dict__) 里面有什么?你应该得到一个Color() 类属性的列表......也许其中之一是RGB 列表?
  • 完全猜测是[[x.rgb.r, x.rgb.g, x.rgb.b] for x in l]
  • @TomMcLean 猜得好。但由于 x.rgb 也是一个可迭代的,你也可以只说 list(x.rgb)
  • @chrslg 这是我的第二个猜测,但你在我编辑之前发布了一个答案,所以我就离开了;)

标签: python list rgb


【解决方案1】:
[list(c.rgb) for c in l]

l 是你的彩色图列表应该做的

例子

import colorgram
l=colorgram.extract("file.png", 6)
colors=[list(c.rgb) for c in l]

[f(x) for x in iterable] 是复合列表语法。所以这是一种从 x 列表计算列表 a f(x) 的方法。 在这里,我所做的是获取 l 中的每个颜色图 c,并从中计算 list(c.rgb)。

c 开始一个颜色图,c.rgb 是 rgb 颜色或该颜色图(但仍以颜色图包特定类型的形式。这也允许通过字段 [c.r, c.g, c.b] 访问)。 并且 list(c.rgb) 将此 rgb 颜色转换为 3 个 int 的列表。

【讨论】:

    【解决方案2】:

    rgb 值存储为命名元组,该元组存储在Color 对象的.rgb 属性下。

    您只需调用my_color.rgb 即可提取RGB 三元组。

    如果您想创建一个 rgb 值列表列表,并将所有 Colors 对象存储在名为 my_colors 的列表中,您可以使用:

    rgb_list = [list(color.rgb) for color in my_colors]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2012-05-03
      • 2015-06-10
      • 1970-01-01
      • 2010-10-01
      • 2020-05-18
      • 2021-08-14
      相关资源
      最近更新 更多