1. 项目概述
在计算机视觉领域,颜色筛选是最基础也是最关键的技术之一。无论是机器人视觉导航、工业分拣系统,还是智能监控应用,准确识别特定颜色区域都是实现更高级功能的前提。传统RGB颜色空间由于将亮度与色度信息混合在一起,在实际应用中往往难以稳定地分离目标颜色。而HSV(Hue-Saturation-Value)颜色空间通过模仿人类视觉感知颜色的方式,将颜色信息分解为色调、饱和度和明度三个独立维度,大大简化了颜色识别任务。
这个项目实现了一个基于OpenCV的实时HSV颜色筛选工具,它能够:
- 通过摄像头实时采集视频流
- 将画面从BGR转换到HSV颜色空间
- 使用滑动条动态调整HSV阈值参数
- 生成并优化颜色掩膜
- 实时显示原始画面、掩膜和筛选结果
提示:HSV颜色空间中,H(色调)的取值范围是0-179(OpenCV中为了适应8位存储),而S(饱和度)和V(明度)的取值范围是0-255。这与常规的0-360度色调表示不同,使用时需要特别注意。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与配置
2.1 硬件要求
- 任何支持OpenCV的摄像头设备(内置或外接USB摄像头)
- 推荐分辨率:640x480或更高(VGA标准)
- 建议在光线稳定的环境下使用
2.2 软件依赖安装
bash复制# 使用pip安装必要的Python包
pip install opencv-python numpy
安装完成后,可以通过以下命令验证安装是否成功:
python复制python -c "import cv2, numpy; print(f'OpenCV版本: {cv2.__version__}\nNumPy版本: {numpy.__version__}')"
2.3 摄像头配置技巧
不同操作系统下可能需要特殊配置:
- Windows:通常自动识别,但可能需要安装厂商驱动
- macOS:可能需要授权摄像头权限
- Linux:需要确保用户有摄像头设备访问权限
bash复制# Linux下授予摄像头权限
sudo chmod 777 /dev/video0
3. 核心代码实现解析
3.1 滑动条控制界面
python复制import cv2
import numpy as np
# 空回调函数,用于滑动条
def nothing(x):
pass
# 创建滑动条窗口
cv2.namedWindow('Trackbars', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Trackbars', 600, 400)
# 创建HSV阈值滑动条
cv2.createTrackbar('H Min', 'Trackbars', 0, 179, nothing)
cv2.createTrackbar('H Max', 'Trackbars', 179, 179, nothing)
cv2.createTrackbar('S Min', 'Trackbars', 0, 255, nothing)
cv2.createTrackbar('S Max', 'Trackbars', 255, 255, nothing)
cv2.createTrackbar('V Min', 'Trackbars', 0, 255, nothing)
cv2.createTrackbar('V Max', 'Trackbars', 2
