1054 The Dominant Color (PAT甲级)
发布人:shili8
发布时间:2025-01-16 06:12
阅读次数:0
**1054 The Dominant Color**
在这个任务中,我们需要根据给定的图片,找出其中最主要的颜色。也就是说,我们需要分析图片中的像素点,并计算每种颜色的出现频率,然后返回出现频率最高的颜色。
### 题目描述给定一张图片,要求输出图片中最主要的颜色。
### 输入格式* 一张图片(RGB模式)
### 输出格式* 最主要的颜色(HEX模式)
###代码实现
from PIL import Imageimport numpy as npdef dominant_color(image_path): # 打开图片 img = Image.open(image_path) # 转换为numpy数组 img_array = np.array(img) # 初始化颜色频率字典 color_freq = {} # 遍历每个像素点 for i in range(img_array.shape[0]): for j in range(img_array.shape[1]): # 获取当前像素点的RGB值 r, g, b = img_array[i, j] # 将RGB值转换为HEX值 hex_color = "#{:02x}{:02x}{:02x}".format(r, g, b) # 如果颜色已经存在于字典中,则增加频率 if hex_color in color_freq: color_freq[hex_color] +=1 else: # 否则,添加到字典中并设置频率为1 color_freq[hex_color] =1 # 找出出现频率最高的颜色 dominant_hex = max(color_freq, key=color_freq.get) return dominant_hex# 测试代码image_path = "test.jpg" print(dominant_color(image_path))
###说明* 这个函数首先打开图片,然后将其转换为numpy数组。
* 然后,它遍历每个像素点,计算RGB值,并将其转换为HEX值。
* 如果颜色已经存在于字典中,则增加频率;否则添加到字典中并设置频率为1。
* 最后,它找出出现频率最高的颜色并返回。
### 注意* 这个函数假设图片是RGB模式的。
* 颜色频率计算基于像素点的数量,而不是像素点的面积或比例。