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

如何从cv2.inRange()的掩码判断目标颜色是否存在并返回布尔值

检测HSV颜色范围内的颜色是否存在

嘿,我来帮你搞定这个问题!其实逻辑很简单:cv2.inRange()生成的掩码是一张二值图——符合目标颜色范围的像素会被标记为白色(值为255),不符合的是黑色(值为0)。我们只要检查这张掩码里有没有非零像素,就能判断目标颜色是否存在啦。

另外先提个小细节:你代码里的图像读取部分有个小问题——cv2.imread()的第二个参数应该是读取模式(比如cv2.IMREAD_COLOR),而不是颜色转换标志。而且OpenCV默认读取的图像是BGR格式,要转HSV得用cv2.COLOR_BGR2HSV,不是COLOR_RGB2HSV哦。

下面是修正后的完整代码,包含颜色存在的判断逻辑:

import cv2
import numpy as np

# 读取图像(默认BGR格式)
img = cv2.imread('test_img.jpg')
# 转换为HSV颜色空间
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 定义HSV颜色范围
lower_range = np.array([0, 0, 0])
upper_range = np.array([100, 100, 100])

# 生成掩码
mask = cv2.inRange(img_hsv, lower_range, upper_range)

# 判断颜色是否存在
if np.any(mask):
    print('color present')
else:
    print('color not present')

补充说明:

  • np.any(mask)会快速检查掩码中是否存在非零值(也就是符合范围的像素),写法非常简洁。
  • 你也可以用cv2.countNonZero(mask) > 0实现同样效果,它会统计掩码中非零像素的数量,只要数量大于0就说明颜色存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:11:58