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

如何使用Python统计图像中各唯一颜色对应的总像素数量

解决方案

原代码问题说明

你写的代码存在两个核心逻辑问题:

  • 仅遍历了图像的RGB三个通道,仅提取了第0行的像素数据做求和,完全没有覆盖整张513*513的图像内容
  • 求和操作无法区分不同像素值的计数,和统计每个颜色像素数的需求不匹配

推荐实现方案

你可以直接用numpy的内置方法实现高效统计,不需要自己写循环遍历全图:

步骤1:提取单通道灰度图

因为你给出的唯一像素值是单值列表,说明这张三通道分割图的每个像素的三个通道值完全一致,直接提取任意一个通道即可得到单通道分割结果:

import numpy as np
# 提取第0个通道的内容,尺寸变为(513, 513)
single_channel = img[:, :, 0]

步骤2:统计所有类别像素数

用np.unique方法直接返回所有唯一像素值和对应的计数:

# return_counts=True 表示同时返回每个唯一值的出现次数
unique_vals, pixel_counts = np.unique(single_channel, return_counts=True)

# 打印对应类别的像素数
for val, count in zip(unique_vals, pixel_counts):
    if val == 0:
        print(f"黑色(像素值0):{count}个")
    elif val == 200:
        print(f"绿色(像素值200):{count}个")
    elif val == 255:
        print(f"白色(像素值255):{count}个")

单类别快速统计

如果你只需要统计某一个类别的像素数,直接用布尔掩码求和即可:

# 统计绿色像素数
green_count = np.sum(single_channel == 200)

结果校验

所有类别的像素数加总应该等于513 * 513 = 263169,你可以用这个值校验统计结果是否正确。


内容的提问来源于stack exchange,提问作者sinG20

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:42:02