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

如何使用Python OpenCV统计指定色值范围内的像素数量

实现方法

推荐使用HSV色彩空间阈值筛选的方案,相比直接在RGB空间判断,HSV的色调维度可以直接区分颜色类别,不受亮度、饱和度变化干扰,更匹配人眼对「相近颜色」的判定逻辑,而且OpenCV自带的原生函数效率极高,不需要手动遍历像素。

具体步骤

  • 步骤1:将OpenCV默认读取的BGR格式图像转换为HSV色彩空间
  • 步骤2:设定目标颜色对应的HSV上下阈值,阈值范围越大,匹配的相近色越多
  • 步骤3:调用cv2.inRange()生成符合颜色范围的二值掩码
  • 步骤4:调用cv2.countNonZero()统计掩码中白色像素的总数,就是符合要求的像素数量

完整代码示例

import cv2
import numpy as np

# 读取本地图像
img = cv2.imread("test.jpg")
# 转换为HSV色彩空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 浅青绿色的HSV阈值,可根据实际需求调整范围
# H取值范围0-180,S、V取值范围0-255
lower_bound = np.array([80, 40, 40])
upper_bound = np.array([100, 255, 255])

# 生成掩码:符合范围的像素为255,不符合为0
mask = cv2.inRange(hsv, lower_bound, upper_bound)

# 统计符合要求的像素总数
total = cv2.countNonZero(mask)
print(f"匹配的像素总数:{total}")

补充说明

  • 如果你不确定阈值怎么设置,可以做一个带滑动条的调试小工具,实时调整阈值看掩码匹配效果,找到最合适的范围。
  • 如果你坚持要在RGB空间做匹配,也可以直接把lower_bound和upper_bound换成RGB的阈值范围,把inRange的输入换成原图即可,只是RGB空间的匹配容易受光照明暗影响,误差会更大。
  • 该方案所有运算都是OpenCV底层优化实现,哪怕是4K分辨率的大图也能毫秒级出结果,远快于Python层面的像素遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:48:00