详解Python PIL getcolors()方法

  • Post category:Python

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()方法的介绍和使用示例。