You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将图像主色提取结果存入单列Pandas DataFrame而非仅打印

修改提取图像主色代码,新增Pandas DataFrame存储功能

关键修改说明

  • 新增导入pandas库,用于构造和操作DataFrame
  • 在提取到主色名称列表后,按照需求生成名为Colors的单列DataFrame
  • 可选添加DataFrame打印查看、CSV文件保存的功能

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from PIL import Image
import webcolors
import pandas as pd  # 新增导入pandas

def closest_color(requested_color):
    min_colors = {}
    for key, name in webcolors.CSS3_HEX_TO_NAMES.items():
        r_c, g_c, b_c = webcolors.hex_to_rgb(key)
        rd = (r_c - requested_color[0]) ** 2
        gd = (g_c - requested_color[1]) ** 2
        bd = (b_c - requested_color[2]) ** 2
        min_colors[(rd + gd + bd)] = name
    return min_colors[min(min_colors.keys())]

def get_color_name(rgb_color):
    try:
        return webcolors.rgb_to_name(rgb_color)
    except ValueError:
        return closest_color(rgb_color)

def extract_dominant_colors(image_path, num_colors=5):
    # 加载图像并转换为RGB格式
    img = Image.open(image_path)
    img = img.convert('RGB')
    img_array = np.array(img)
    
    # 重塑数组以适配KMeans聚类
    pixels = img_array.reshape((-1, 3))
    
    # 用KMeans提取主色
    kmeans = KMeans(n_clusters=num_colors)
    kmeans.fit(pixels)
    
    # 获取主色RGB值
    dominant_colors = kmeans.cluster_centers_.astype(int)
    
    # 转换为颜色名称
    color_names = [get_color_name(tuple(color)) for color in dominant_colors]
    
    # 打印主色名称
    print(' '.join(color_names))
    
    # 新增:生成单列Pandas DataFrame
    color_data = {'Colors': color_names}
    color_frame = pd.DataFrame(color_data)
    # 可选:打印DataFrame验证结果
    print("\n生成的DataFrame:")
    print(color_frame)
    # 可选:将DataFrame保存为CSV文件
    # color_frame.to_csv('dominant_colors.csv', index=False)
    
    # 显示调色板窗口
    plt.figure(figsize=(8, 2))
    plt.imshow([dominant_colors])
    plt.axis('off')
    plt.show()
    
    return color_names, color_frame  # 新增返回DataFrame,方便后续操作

# 调用函数,获取主色名称和DataFrame
_, df = extract_dominant_colors('test_image.jpg')

功能验证

运行代码后会输出:

  1. 控制台打印的主色名称(示例:gray maroon silver gray black)
  2. 生成的DataFrame结构及内容
  3. 弹出的调色板预览窗口
  4. 若开启CSV保存功能,当前目录会生成dominant_colors.csv文件

内容的提问来源于stack exchange,提问作者user20649218

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:48:22