当前位置:实例文章 » 其他实例» [文章]1054 The Dominant Color (PAT甲级)

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模式的。
* 颜色频率计算基于像素点的数量,而不是像素点的面积或比例。

相关标签:算法
其他信息

其他资源

Top