Python PIL的getcolors()方法详解
1. getcolors()方法介绍
getcolors()是Python PIL库中Image模块中的方法。该方法用于获取图像的颜色直方图信息。
该函数返回一个包含图像颜色计数值和颜色值的元组列表。如果使用参数limit,将返回包含最多 limit 个项的列表。
该方法的语法如下:
getcolors(band=None, ascending=False, cutoff=0, *, mask=None, hist=None, maximum=None, normalize=False, palette=None, sort=True, source=None, white=None, limit=None)
该方法的参数含义如下:
- band: 带有直方图或None的带标识符。
- ascending: 是否对计数器按升序排序。
- cutoff: 少于此数的颜色条目将被忽略,不包括超过 maximum 的颜色。
- mask: 定义一个掩码数组,只考虑选定的像素。使用模式 “L”(8位模式)或 “1”(黑白模式)的Binary 可选参数。
- hist: 已经计算的直方图。
- maximum: 颜色强度最大值。 1.0 表示 100%),用于缩小返回的直方图。
- normalize: 启用归一化计数,使最大计数值为1。
- palette: 调色板,如 WebPalette。
- sort: 是否按计数顺序排序。
- source: 源图像。
- white: 替换掉 white(如 WebPalette)颜色的替代色
2. getcolors()方法的使用示例
示例 1:将getcolors()方法获取到的RGB直方图转化成Excel文件
# 加载所需的库
from PIL import Image
import pandas as pd
# 打开图像(通过指定图像路径)
image = Image.open('example.png')
# 获取直方图数据,限制输出项数
histogram = image.getcolors(256)
histogramList = []
# 格式化直方图数据,将(R,G,B)格式转化成'RGB(R,G,B)'格式,并添加到列表
for item in histogram:
rgbValue = ', '.join(str(v) for v in item[1])
histogramList.append(('RGB'+str(tuple(item[1])),item[0]))
# 使用Pandas将列表转化为Excel文件
df = pd.DataFrame(histogramList, columns=['Color', 'Count'])
df.to_excel("histogram.xlsx", index=False)
示例 2:获取图像的颜色数量
# 加载所需的库
from PIL import Image
# 打开图像(通过指定图像路径)
image = Image.open('example.png')
# 获取直方图数据
histogram = image.getcolors()
# 获取图像颜色数量(通过直方图数据)
colorCount = len(histogram)
# 打印结果
print("图像颜色数量:", colorCount)
以上便是getcolors()方法的介绍和使用示例。