【发布时间】:2018-07-13 21:00:59
【问题描述】:
我在网上搜索了一些资源,但它们并不是我想要的。
所以对于一组图像。我想生成一个形式为 {color1: p1, color2: p2,..... color100: p100} 的颜色直方图,其中 colorxxx 表示来自 RGB 图像的颜色。 p 表示该颜色的概率。
有没有简单的方法在 python 中做这些事情?
谢谢
【问题讨论】:
-
您没有找到 PIL 的函数
histogram,还是您认为它不适合您的目的,因为它不适用于 set 图像?跨度> -
它返回一个长度为 256*3 的列表。但它只计算每个频道的频率并将它们连接在一起。它与我需要的不同,因为我需要的实际上是将颜色聚类成一组颜色并计算聚类的频率。在一维中,只需要设置每个bin的间隔和计数频率的bin,但是对于3通道的图像呢?
-
@jack 如果您可以通过指定您搜索的哪些在线资源以及确切原因它们不是您要查找的内容来增强您的问题,我认为 usr256 和其他人(包括我自己)会更容易回答你的问题
-
您可以使用
PIL访问图像的各个 RGB 像素,并使用collections.Counter实例来计算每种颜色的数量,只需将它们发送到tuple即可组成三个颜色通道值。这将起作用,因为这些元组将是有效的字典键,例如 (255, 0, 128)—this is important becauseCounter` 是一个dict子类,它要求键是可散列的(换句话说,它只能计算可散列的东西)。发送完所有像素后,Counter实例是实际上是图像的直方图。
标签: python image colors histogram