OpenCV色彩过滤与物体追踪实战 - 第2节
2. 颜色空间基础
RGB 颜色模型 · HSV 颜色模型 · 为什么 HSV 更适合色彩过滤
1. RGB 颜色模型
RGB 模型基于加色混合,使用 红 (R)、绿 (G)、蓝 (B) 三个通道,每个通道通常为 0–255。RGB 是相机、显示器直接使用的色彩空间,但三个通道高度相关,且受光照影响剧烈。
| 特性 | RGB 说明 |
|---|---|
| 通道相关性 | R/G/B 高度耦合,亮度变化同时影响三个通道 |
| 光照敏感度 | 阴影或高光下,RGB 值剧烈漂移,难以设定固定阈值 |
| 直观性 | 不符合人类对“色调、饱和度、明度”的感知 |
2. HSV 颜色模型
HSV 将颜色分解为 色调 (Hue)、饱和度 (Saturation)、明度 (Value)。色调用角度 0°–180°(OpenCV 中 0–180)表示,饱和度与明度各 0–255。HSV 分离了颜色本质与光照信息。
HSV 各分量范围 (OpenCV)
| 分量 | 范围 | 物理意义 |
|---|---|---|
| H (色调) | 0 – 179 | 颜色种类 (红、绿、蓝等) |
| S (饱和度) | 0 – 255 | 颜色纯度 / 鲜艳程度 |
| V (明度) | 0 – 255 | 亮度 / 光照强度 |
3. 为什么 HSV 更适合色彩过滤
色彩过滤的核心是 稳定地分离目标颜色。HSV 将色调与光照解耦,使得我们只需设定 H 范围即可锁定颜色,S 和 V 用于排除过暗/过饱和区域。下面通过对比说明。
✅ HSV 优势总结
• 色调 H 对光照不敏感,阴影下红色仍是红色
• 可独立调节饱和度与明度阈值,适应不同环境
• 过滤时只需一个 H 区间 + S/V 下限,代码简洁鲁棒
• 色调 H 对光照不敏感,阴影下红色仍是红色
• 可独立调节饱和度与明度阈值,适应不同环境
• 过滤时只需一个 H 区间 + S/V 下限,代码简洁鲁棒
代码示例:RGB vs HSV 过滤红色
# RGB 硬阈值 (光照脆弱)
lower_rgb = np.array([200, 0, 0])
upper_rgb = np.array([255, 80, 80])
mask_rgb = cv2.inRange(img_rgb, lower_rgb, upper_rgb)
# HSV 鲁棒过滤 (推荐)
img_hsv = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2HSV)
lower_hsv = np.array([0, 60, 60]) # 红色低色调
upper_hsv = np.array([10, 255, 255])
mask_hsv = cv2.inRange(img_hsv, lower_hsv, upper_hsv)
实际项目中,HSV 过滤能大幅降低光照干扰,配合形态学操作即可稳定追踪物体。这也是本课程后续所有追踪实验的基础。