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

如何在NumPy中获取RGB图像的均值颜色数组?

获取RGB图像各通道均值的Numpy方法

这问题我之前处理图像的时候也踩过坑!默认的np.mean()会把整个数组的所有元素揉在一起算均值,要拿到每个通道单独的平均值,只需要给mean()函数指定**计算的轴(axis)**就搞定了。

分两种常见图像格式来说:

1. 图像形状为 (高度, 宽度, 通道数)(比如PIL、Matplotlib读取的RGB图像)

这种是最普遍的格式,通道维度在最后。我们需要对高度(第0轴)和宽度(第1轴)的所有像素求平均,保留通道维度的结果:

import numpy as np

# 假设image是读入的RGB图像,形状为(H, W, 3)
channel_means = np.mean(image, axis=(0, 1))
print(channel_means)  # 输出类似 [2.31, 4.4211, 10.01] 的数组

2. 图像形状为 (通道数, 高度, 宽度)(部分专业图像处理库的格式)

如果你的图像通道维度在最前面,那就对后面两个轴(高度和宽度)求平均:

channel_means = np.mean(image, axis=(1, 2))

举个直观的测试例子:

# 创建一个2x2的测试RGB图像,每个通道的像素值一致
test_image = np.array([
    [[10, 20, 30], [10, 20, 30]],
    [[10, 20, 30], [10, 20, 30]]
])

# 计算各通道均值
means = np.mean(test_image, axis=(0, 1))
print(means)  # 输出 [10. 20. 30.],完全符合预期

额外小提示:

  • 如果用OpenCV读取图像,默认是BGR顺序,求出来的均值顺序也是BGR,如果需要RGB的话,记得先用cv2.cvtColor(image, cv2.COLOR_BGR2RGB)转换一下。
  • 不管图像是整数类型还是浮点类型,np.mean()都会返回浮点型的均值数组,刚好满足你要的精度需求。

内容的提问来源于stack exchange,提问作者Denis D'yachkov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:43:47