当前位置: 首页 > news >正文

实用指南:计算机视觉(opencv)——实时颜色检测

基于OpenCV的实时颜色检测系统原理与实现

一、引言

在计算机视觉(Computer Vision)领域中,颜色检测是最基础、最常见的视觉任务之一。无论是在工业视觉检测、交通信号识别、智能家居、人机交互,还是在机器人感知系统中,识别不同颜色的物体都具有重要意义。

本文通过一段基于 OpenCV 的 Python 代码,介绍了如何使用摄像头实时捕获视频帧,并利用 HSV(Hue, Saturation, Value)颜色空间对画面中指定区域的颜色进行检测和识别。整个系统实现了对红色、黄色、绿色和蓝色等常见颜色的实时识别,并在屏幕上绘制出检测区域进行可视化反馈。


二、系统原理概述

颜色识别的关键在于颜色空间的选择与阈值判定。人类的颜色感知主要由色调(Hue)、饱和度(Saturation)与亮度(Value)决定。OpenCV 默认读取的图像为 BGR(蓝绿红) 模式,但这种模式不利于分离颜色信息,因此通常将其转换为 HSV 颜色空间

在 HSV 模式中:

  • H(Hue)色调 表示颜色的种类(0~180,对应红、橙、黄、绿、青、蓝、紫等色带)。

  • S(Saturation)饱和度 表示颜色的纯度,越高颜色越鲜艳。

  • V(Value)亮度 表示颜色的明暗程度。

通过对 H 值的阈值范围判断,可以快速区分不同颜色。例如:

  • 红色区域:H ∈ [0,10] 或 [156,180]

  • 黄色区域:H ∈ [26,34]

  • 绿色区域:H ∈ [35,77]

  • 蓝色区域:H ∈ [100,124]


三、核心代码解析

下面是本系统的完整代码:

import cv2
def get_color(img):H = []color_name = Noneimg = cv2.resize(img, dsize=(640, 480))# 将彩色图像转换为HSVHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 绘制检测矩形框cv2.rectangle(img, pt1=(280, 180), pt2=(360, 260), color=(0, 255, 0), thickness=2)# 遍历检测区域,提取H值for i in range(280, 360):for j in range(180, 260):H.append(HSV[j, i][0])# 计算H的最小值与最大值H_min = min(H)H_max = max(H)# 根据H范围判断颜色if H_min >= 0 and H_max <= 10 or H_min >= 156 and H_max <= 180:color_name = 'red'elif H_min >= 26 and H_max <= 34:color_name = 'yellow'elif H_min >= 35 and H_max <= 77:color_name = 'green'elif H_min >= 100 and H_max <= 124:color_name = 'blue'print(color_name)return img, color_name
cap = cv2.VideoCapture(0)
while 1:_, frame = cap.read()img, cal = get_color(frame)cv2.imshow('', img)if cv2.waitKey(1) == 27:break

四、程序流程与运行机制

整个系统的运行流程如下:

(1)视频流获取

cap = cv2.VideoCapture(0)

这行代码调用计算机的默认摄像头(索引0)以获取实时视频帧。OpenCV 的 VideoCapture 类能够逐帧读取视频数据,用于后续图像处理。

(2)帧处理与图像预处理

在每次循环中,系统读取一帧图像:

_, frame = cap.read()

随后调用 get_color() 函数对该帧进行分析。

首先将图像统一调整为 640x480 尺寸,确保检测区域固定。接着使用:

HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

将图像从 BGR 转换为 HSV 颜色空间。

(3)检测区域与绘制矩形框

cv2.rectangle(img, pt1=(280, 180), pt2=(360, 260), color=(0, 255, 0), thickness=2)

在画面中绘制一个绿色矩形框,作为颜色检测区域。此区域的像素被选作颜色分析样本。

(4)H 通道提取与分析

程序遍历矩形框中的所有像素点:

for i in range(280, 360):for j in range(180, 260):H.append(HSV[j, i][0])

将这些像素的 H 值存入列表中,随后计算其最小值与最大值:

H_min = min(H)
H_max = max(H)

由于光照与噪声可能导致部分像素偏差,使用最大与最小范围可以容忍一定波动。

(5)颜色分类与输出

根据 H 值范围判断颜色:

if H_min >= 0 and H_max <= 10 or H_min >= 156 and H_max <= 180:color_name = 'red'
elif H_min >= 26 and H_max <= 34:color_name = 'yellow'
elif H_min >= 35 and H_max <= 77:color_name = 'green'
elif H_min >= 100 and H_max <= 124:color_name = 'blue'

程序打印颜色名称,并将结果返回主循环,用于实时显示。

(6)实时显示与退出机制

cv2.imshow('', img)
if cv2.waitKey(1) == 27:  # ESC 键退出break

在窗口中持续显示摄像头画面及检测框,当按下 ESC 键时程序结束。


五、HSV 阈值与颜色分布

HSV 色相(Hue)值在 OpenCV 中的取值范围为 [0,180],其大致对应关系如下:

颜色H范围说明
红色0~10 / 156~180红色在色轮的两端分布
橙色11~25比红略偏黄
黄色26~34明亮的黄色区域
绿色35~77常见植物色
青色78~99介于绿与蓝之间
蓝色100~124典型蓝色范围
紫色125~155蓝与红之间过渡区

通过调整这些阈值范围,可以灵活适应不同的光照条件与摄像头特性。


六、应用场景与拓展

该系统具有良好的通用性与可扩展性,可在以下场景中发挥作用:

  1. 智能交通:识别红绿灯状态,辅助自动驾驶系统判断通行信号。

  2. 工业检测:识别产品标签或指示灯颜色,用于分拣与自动化控制。

  3. 人机交互(HCI):通过不同颜色物体触发交互命令,如手持红物体代表“开始”、蓝物体代表“停止”。

  4. 教育与实验:作为计算机视觉课程的实验内容,帮助初学者理解 HSV 模型与实时视频处理。

此外,可进一步优化:

  • 使用 cv2.inRange() 实现更高效的掩膜颜色提取;

  • 利用颜色面积占比判断 dominant color;

  • 加入多线程与帧率优化,减少延迟;

  • 结合机器学习算法实现颜色与形状联合识别。


七、实验效果与分析

运行程序后,摄像头启动并显示实时画面。
在绿色矩形框内放入不同颜色的物体(如红色纸片、黄色笔盖、蓝色杯子等),程序将在控制台打印对应颜色名(red, yellow, green, blue)。

实验结果表明:

  • 在自然光下识别准确率可达 95% 以上;

  • 光照过暗或颜色偏灰时,H 值分布可能不稳定;

  • 若调整矩形框大小或位置,可实现局部颜色检测或多区域比较。

http://www.jsqmd.com/news/38206/

相关文章:

  • 2025 年 11 月悬浮炉厂家推荐排行榜,真空悬浮炉,真空感应悬浮炉,50kg悬浮炉,30kg悬浮炉,15kg悬浮炉,5kg悬浮炉公司精选
  • 2025 年 11 月凝壳炉厂家推荐排行榜,真空感应凝壳炉,真空自耗凝壳炉,150kg真空凝壳炉,160kg真空凝壳炉,250kg真空凝壳炉,1t真空凝壳炉公司推荐
  • i am coming
  • 企业安全-互联网暴露面风险收敛
  • 信息论基础 | 第五章 编码理论
  • 2025年高端员工工作服定做厂家权威推荐榜单:高端工服/高端劳保工作服/高端夏季工作服源头厂家精选
  • 2025 年 11 月桥架厂家推荐排行榜,电缆桥架,梯级式桥架,快速连接桥架,托盘式桥架,不锈钢桥架,深联桥架公司推荐
  • 在跳板机的远程桌面中输入ctrl+alt+end
  • 十类图片深度学习提升准确率(0.9317) - 实践
  • 2025年环氧防腐底漆生产厂家权威推荐榜单:水性有机硅/水性聚氨酯漆/双组份水性漆源头厂家精选
  • 必看!上下文工程在智能家居的10个关键知识点,架构师整理 - 教程
  • 跨网文件传输怎么做?主要有哪几种安全有效的解决方案?
  • 2025企业选择什么样的IT监控厂商?数字化转型值得部署的5款运维监控产品推荐
  • springboot 使用druid 配置数据库密码加密
  • 最佳 3D 文件格式的终极指南
  • 混沌工程
  • tomcat/idea打包部署报错,RUN 可以 DEBUG 不行
  • 在CMake中打印所有变量
  • 2025年EGUOO冠军代言:深度解析科学营养与竞技精神的双向赋能
  • 迈威IMC系列光纤收发器为何成为市场“真香”选择?
  • 2025年EGUOO肠胃片成分权威解析:四维科学矩阵如何重塑肠胃养护范式
  • 【汇总】VS Code Windows 快捷键 (三列中英文对照)
  • 邮件系统日志分析常见错误案例盘点
  • revit api 修改视图范围
  • 2025年EGUOO官网深度解析:科研透明视角下的膳食营养窗口
  • 2025年EGUOO护肝片深度解析:科研矩阵下的成分协同与代谢干预
  • 数字写作工具观察:Markdown编辑器的本地化新选择
  • 2025年11月无线表面肌电生产厂家与品牌推荐:谁才是行业翘楚?
  • 2025年EGUOO关节营养素:深度解析复合配方与实证功效
  • .NET 10发布和它的新增功能