吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1580|回复: 13
收起左侧

[Python 原创] Python对图片进行颜色分析并提供图片中的主要颜色以及其相应的出现频率

  [复制链接]
zhzhx 发表于 2023-8-14 16:53
一、前言对图片进行颜色分析,为您提供图片中的主要颜色以及其相应的出现频率。具体来说,将执行以下步骤:
  • 将图片转换为RGB颜色空间。
  • 聚类方法对颜色进行分类。
  • 找到每个聚类的中心,这可以代表该聚类的主要颜色。
  • 根据每个聚类中的像素数量,确定每种颜色的出现频率。
二、代码
[Python] 纯文本查看 复制代码
from sklearn.cluster import KMeans
import numpy as np
from PIL import Image
 
# Define the number of colors to extract
n_colors = 5
 
image_path = r"D:\Desktop\tp.png"
img = Image.open(image_path)
 
# Convert image to RGB array
img_array = np.array(img)
img_array = img_array.reshape((img_array.shape[0] * img_array.shape[1], 3))
 
# Use KMeans clustering to find most dominant colors
kmeans = KMeans(n_clusters=n_colors)
kmeans.fit(img_array)
 
# Get the RGB values of the centroids
centroids = kmeans.cluster_centers_
 
# Count the number of pixels associated with each cluster
histogram = np.histogram(kmeans.labels_, bins=n_colors, range=(0, n_colors))
 
# Calculate the percentage of each color
percentages = (histogram[0] / img_array.shape[0]) * 100
 
# Sort colors by percentage in descending order
sorted_indices = np.argsort(percentages)[::-1]
sorted_centroids = centroids[sorted_indices]
sorted_percentages = percentages[sorted_indices]
 
colors_list = []
# Print the dominant colors and their percentages in descending order
for i in range(n_colors):
    color_info = {}
    color_info["rgb"] = f"RGB({sorted_centroids[i][0]:.0f}, {sorted_centroids[i][1]:.0f}, {sorted_centroids[i][2]:.0f})"
    color_info["percentage"] = sorted_percentages[i]
    colors_list.append(color_info)
    print(
        f"Color {i + 1}: RGB({sorted_centroids[i][0]:.0f}, {sorted_centroids[i][1]:.0f}, {sorted_centroids[i][2]:.0f}) - {sorted_percentages[i]:.2f}%")
 
print("*******************************************")
print(colors_list)


三、结果
[Python] 纯文本查看 复制代码
Color 1: RGB(142, 110, 86) - 24.22%
Color 2: RGB(183, 158, 134) - 23.22%
Color 3: RGB(88, 64, 50) - 22.36%
Color 4: RGB(39, 24, 18) - 19.14%
Color 5: RGB(230, 215, 197) - 11.06%
*******************************************
[{'rgb': 'RGB(142, 110, 86)', 'percentage': 24.223709106445312}, {'rgb': 'RGB(183, 158, 134)', 'percentage': 23.224353790283203}, {'rgb': 'RGB(88, 64, 50)', 'percentage': 22.359180450439453}, {'rgb': 'RGB(39, 24, 18)', 'percentage': 19.1375732421875}, {'rgb': 'RGB(230, 215, 197)', 'percentage': 11.055183410644531}]

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

67haha 发表于 2023-8-14 17:14
技术分享不错 不过这个具体有什么作用给实际应用使用
bhleo 发表于 2023-8-14 17:07
shikongliangze 发表于 2023-8-14 17:30
woshishuid3 发表于 2023-8-14 17:38
感谢分享
SU150228 发表于 2023-8-14 18:32
图片分析之后能否删除颜色
cosmos2023 发表于 2023-8-14 20:06
谢谢分享,小白看不懂
pxxlike 发表于 2023-8-14 20:13
谢谢分享
头像被屏蔽
moruye 发表于 2023-8-14 21:40
提示: 作者被禁止或删除 内容自动屏蔽
JiaXiaoShuai 发表于 2023-8-15 08:37
为什么感觉python什么都能干呢?太奇怪了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表