要提取图片中渐变色的颜色构成比例,可以按照以下步骤进行:
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
# 打开图片
image = Image.open('gradient.png')
image = image.convert('RGB')
# 将图片转换为NumPy数组
data = np.array(image)
# 假设渐变是水平方向的,提取中间一行像素
row = data[data.shape[0] // 2, :]
# 统计颜色分布
unique_colors, counts = np.unique(row, axis=0, return_counts=True)
# 计算颜色比例
total_pixels = row.shape[0]
color_proportions = counts / total_pixels
# 输出颜色及其比例
for color, proportion in zip(unique_colors, color_proportions):
print(f"Color: {color}, Proportion: {proportion:.2%}")
# 可视化颜色分布
plt.figure(figsize=(10, 2))
plt.imshow([unique_colors], aspect='auto')
plt.axis('off')
plt.show()
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 打开图片
image = cv2.imread('gradient.png')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 假设渐变是水平方向的,提取中间一行像素
row = image[image.shape[0] // 2, :]
# 统计颜色分布
unique_colors, counts = np.unique(row, axis=0, return_counts=True)
# 计算颜色比例
total_pixels = row.shape[0]
color_proportions = counts / total_pixels
# 输出颜色及其比例
for color, proportion in zip(unique_colors, color_proportions):
print(f"Color: {color}, Proportion: {proportion:.2%}")
# 可视化颜色分布
plt.figure(figsize=(10, 2))
plt.imshow([unique_colors], aspect='auto')
plt.axis('off')
plt.show()
通过这些步骤,你可以有效地提取图片中渐变色的颜色构成比例,并根据需要进行进一步的分析和处理。