Python OpenCV通过HSV色彩空间筛选红色

# 定义红色的HSV范围
lower_red_1 = np.array([0, 43, 46])
upper_red_1 = np.array([10, 255, 255])
lower_red_2 = np.array([156, 43, 46])
upper_red_2 = np.array([180, 255, 255])
# 根据阈值创建掩码
mask1 = cv2.inRange(hsv, lower_red_1, upper_red_1)
mask2 = cv2.inRange(hsv, lower_red_2, upper_red_2)
# 对原图像和掩码进行位运算
img1 = cv2.bitwise_and(img, img, mask=mask1)
img2 = cv2.bitwise_and(img, img, mask=mask2)
red_only = cv2.bitwise_or(img1, img2)

有线博主的代码运行正常,但是红色筛选不全,是忽略了HSV色彩空间红色范围的问题

HSV色彩空间里面红色是处于0度附近,然而在opencv里面,红色H通道的范围因其在0度正负方向均有存在,导致实际的np.array的取值范围变成了两个

(百度AI给的样例就是这个问题,其他博主的示例代码基本也包含了HSV色彩空间中0度正方向lower_red_1upper_red_1这一部分,造成了只识别更鲜艳、更明亮的这一部分红色,而忽略了0度负方向lower_red_2upper_red_2这些更浓厚、更暗的红色,可参考下表

色彩空间锥形图来源:

RGB颜色空间、HSV颜色空间的理解 - warmbeast - 博客园

HSV取值范围来源:

HSV通道对应颜色数值范围参考表 - OpenCV软件 Halcon视觉技术网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值