如何判断像素的HSV值是否在指定颜色的上下阈值范围内?
实现HSV像素值区间判断的两种方案
方法1:直接对比HSV值与上下阈值
你定义的low_blue和high_blue都是numpy数组,可以直接用逐元素逻辑判断,三个通道同时满足区间要求即为匹配:
import numpy as np # 目标HSV像素值 target_hsv = np.array([50, 77, 174]) # 逐通道判断是否在区间内,所有通道都满足则返回True is_blue = np.all((target_hsv >= low_blue) & (target_hsv <= high_blue)) if is_blue: print("blue")
你提供的示例目标HSV值中,H通道为50、S通道为77,均低于蓝色下限的80,所以此处判断结果为False,不会输出blue。
方法2:复用已生成的掩码直接查询
你已经通过cv2.inRange生成了全图的蓝色掩码blue_mask,掩码中数值为255的位置代表对应像素落在蓝色区间,0代表不匹配,直接读取对应坐标的掩码值即可。
注意:OpenCV中图像数组的维度顺序是(高度, 宽度, 通道数),对应坐标取值时要先写y再写x:
# 你的坐标为x=696、y=260,取值时顺序为[y, x] if blue_mask[260, 696] != 0: print("blue")
这个方法适合判断原图中特定坐标点颜色的场景,不需要单独再做一次阈值判断,复用已有结果效率更高。
内容的提问来源于stack exchange,提问作者A.Murtazin
相关产品推荐
相关产品推荐

