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

[具身智能-448]:HSV颜色空间是颜色识别的利器,如何使用HSV进行颜色识别?

使用 HSV 颜色空间进行颜色识别核心思想是利用其将颜色信息与亮度信息分离的特性通过设定色相H、饱和度S、明度V三个维度的阈值范围来精准地筛选出目标颜色。这种方法比在 RGB 空间识别更稳定对光照变化不那么敏感。下面是一个完整的、基于 Python 和 OpenCV 的颜色识别流程从原理到代码实现手把手带你完成。 核心原理为什么是 HSV在RGB 模型中一个物体的颜色会受到光照强度的显著影响。同一个红苹果在阳光下和阴影里其 R、G、B三个数值会剧烈变化导致识别困难。而在 HSV 空间中颜色被分解为色相 (Hue): 决定“是什么颜色”相对稳定。饱和度 (Saturation):决定“颜色有多纯”受光照影响较小。明度 (Value):决定“颜色有多亮”直接反映光照强度。因此我们只需锁定H 和 S的大致范围并为V 设置一个较宽的区间就能在不同光照条件下稳定地识别出目标颜色。️ 实战步骤从零开始识别颜色整个识别流程可以概括为以下五个步骤读取图像并转换颜色空间将摄像头或图片读取的 BGR 格式图像转换为 HSV 格式。定义颜色阈值根据目标颜色设定 H、S、V 三个通道的下限和上限。创建掩膜 (Mask)使用cv2.inRange()函数根据阈值从 HSV 图像中提取出目标颜色区域生成一个二值图像黑白图。图像后处理对掩膜进行形态学操作如开运算、闭运算以去除噪点、填充空洞使目标区域更完整。提取与显示结果将处理好的掩膜与原始图像进行“按位与”操作最终只保留目标颜色的部分。‍ 代码实现实时颜色识别以下是一个完整的 Python 脚本它会打开你的摄像头并实时识别画面中的红色物体。pythonimport cv2 import numpy as np # 1. 打开摄像头 cap cv2.VideoCapture(0) while True: # 2. 读取一帧图像 ret, frame cap.read() if not ret: break # 3. 将 BGR 图像转换为 HSV 图像 hsv cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 4. 定义红色的 HSV 阈值范围 # 注意红色在色相环的两端0度和180度附近所以需要定义两个范围 lower_red1 np.array() upper_red1 np.array() lower_red2 np.array() upper_red2 np.array() # 5. 根据阈值创建两个掩膜 mask1 cv2.inRange(hsv, lower_red1, upper_red1) mask2 cv2.inRange(hsv, lower_red2, upper_red2) # 6. 将两个掩膜合并 mask cv2.bitwise_or(mask1, mask2) # 7. 图像后处理形态学操作去除噪点 kernel np.ones((5,5),np.uint8) mask cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) # 开运算先腐蚀后膨胀去除小噪点 mask cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) # 闭运算先膨胀后腐蚀填充空洞 # 8. 将掩膜与原图进行按位与操作提取目标区域 result cv2.bitwise_and(frame, frame, maskmask) # 9. 显示结果 cv2.imshow(Original Frame, frame) cv2.imshow(Mask, mask) cv2.imshow(Result, result) # 按 q 键退出 if cv2.waitKey(1) 0xFF ord(q): break # 释放资源 cap.release() cv2.destroyAllWindows() 关键点如何确定 HSV 阈值这是颜色识别中最关键也最需要技巧的一步。网上的阈值参数如lower_red只能作为参考因为摄像头、光照、物体材质都会影响最终的 HSV 值。最佳实践是使用交互式滑动条来现场调试。你可以编写一个带有滑动条的程序实时调整 H、S、V 的上下限直到掩膜中只剩下你想要的目标物体。以下是创建 HSV 阈值调试工具的代码pythonimport cv2 import numpy as np def nothing(x): pass # 创建一个窗口 cv2.namedWindow(Trackbars) # 创建6个滑动条分别对应H,S,V的最小值和最大值 cv2.createTrackbar(H Min, Trackbars, 0, 179, nothing) cv2.createTrackbar(H Max, Trackbars, 10, 179, nothing) cv2.createTrackbar(S Min, Trackbars, 43, 255, nothing) cv2.createTrackbar(S Max, Trackbars, 255, 255, nothing) cv2.createTrackbar(V Min, Trackbars, 46, 255, nothing) cv2.createTrackbar(V Max, Trackbars, 255, 255, nothing) # 打开摄像头 cap cv2.VideoCapture(0) while True: ret, frame cap.read() if not ret: break # 转换为HSV hsv cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 获取滑动条的当前位置 h_min cv2.getTrackbarPos(H Min, Trackbars) h_max cv2.getTrackbarPos(H Max, Trackbars) s_min cv2.getTrackbarPos(S Min, Trackbars) s_max cv2.getTrackbarPos(S Max, Trackbars) v_min cv2.getTrackbarPos(V Min, Trackbars) v_max cv2.getTrackbarPos(V Max, Trackbars) # 定义阈值并创建掩膜 lower_val np.array([h_min, s_min, v_min]) upper_val np.array([h_max, s_max, v_max]) mask cv2.inRange(hsv, lower_val, upper_val) # 显示原图和掩膜 cv2.imshow(Frame, frame) cv2.imshow(Mask, mask) if cv2.waitKey(1) 0xFF ord(q): break cap.release() cv2.destroyAllWindows() 常见颜色的 HSV 范围参考 (OpenCV格式)表格颜色H (色相)S (饱和度)V (明度)红色0-10 和 156-18043-25546-255绿色35-7743-25546-255蓝色100-12443-25546-255黄色26-3443-25546-255注意OpenCV 中 H 的范围是 0-179S 和 V 的范围是 0-255。上表中的数值仅为起点务必使用调试工具根据实际环境进行微调。

相关文章:

[具身智能-448]:HSV颜色空间是颜色识别的利器,如何使用HSV进行颜色识别?

使用 HSV 颜色空间进行颜色识别,核心思想是利用其将颜色信息与亮度信息分离的特性,通过设定色相(H)、饱和度(S)、明度(V)三个维度的阈值范围,来精准地筛选出目标颜色。这…...

STS-Bcut语音转字幕完整指南:如何快速实现视频自动字幕生成

STS-Bcut语音转字幕完整指南:如何快速实现视频自动字幕生成 【免费下载链接】STS-Bcut 使用必剪API,语音转字幕,支持输入声音文件,也支持输入视频文件自动提取音频。 项目地址: https://gitcode.com/gh_mirrors/st/STS-Bcut …...

GetQzonehistory:如何一键永久备份QQ空间说说的完整解决方案

GetQzonehistory:如何一键永久备份QQ空间说说的完整解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里的青春记忆会随着时间流逝而消失&#xff…...

Alice-Tools终极指南:轻松提取和编辑AliceSoft游戏文件

Alice-Tools终极指南:轻松提取和编辑AliceSoft游戏文件 【免费下载链接】alice-tools Tools for extracting/editing files from AliceSoft games. 项目地址: https://gitcode.com/gh_mirrors/al/alice-tools 你是否曾经想要修改自己喜爱的AliceSoft游戏&…...

终极指南:用SMUDebugTool解锁AMD Ryzen处理器的隐藏性能

终极指南:用SMUDebugTool解锁AMD Ryzen处理器的隐藏性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…...

机器学习必备统计学知识体系与经典书籍推荐

1. 为什么机器学习从业者需要统计学书籍?当你第一次接触机器学习时,可能会被各种炫酷的算法和框架吸引。但很快就会发现,那些最困扰你的问题——为什么模型在这里表现好而在那里表现差?如何判断这个特征真的有用?为什么…...

5分钟轻松掌握喜马拉雅VIP音频高效下载的实用方案

5分钟轻松掌握喜马拉雅VIP音频高效下载的实用方案 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 你是否曾在喜马拉雅FM上遇到这样…...

PCA结果怎么看?从‘身材成分’到‘用户画像’,教你读懂主成分的实际业务含义

PCA结果解读实战:从数学抽象到业务洞察的破译指南 当你第一次看到PCA输出的主成分载荷矩阵时,那些密密麻麻的数字是否让你感到困惑?就像面对一份未经翻译的外语文件,明明知道它包含重要信息,却无法理解其中的含义。本文…...

本地化语义代码搜索实践:基于EmbeddingGemma与FAISS的Claude Code集成方案

1. 项目概述:本地化语义代码搜索的实践与价值 如果你和我一样,日常开发重度依赖 Claude Code 这类 AI 编程助手,那你肯定也遇到过那个经典的痛点:想让 AI 理解整个项目的上下文,就得把代码片段一股脑地塞进对话窗口&a…...

如何3分钟完成Windows和Office智能激活?KMS_VL_ALL_AIO终极指南

如何3分钟完成Windows和Office智能激活?KMS_VL_ALL_AIO终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活烦恼吗?每次重装系统后都要面对繁琐…...

告别‘鬼影’!手把手教你调试IPS屏VCOM电压,解决残影难题

告别‘鬼影’!手把手教你调试IPS屏VCOM电压,解决残影难题 当你在调试一块新到手的IPS显示屏时,是否遇到过这样的困扰:明明按照规格书参数配置了驱动电压,屏幕上却依然顽固地残留着上一帧画面的"鬼影"&#x…...

终极指南:如何用Idle Master轻松实现Steam卡片自动化收集

终极指南:如何用Idle Master轻松实现Steam卡片自动化收集 【免费下载链接】idle_master Get your Steam Trading Cards the Easy Way 项目地址: https://gitcode.com/gh_mirrors/id/idle_master 还在为Steam交易卡片的手动挂机而烦恼吗?每天浪费数…...

PCL2启动器资源下载失败的终极解决指南:3步告别文件损坏烦恼

PCL2启动器资源下载失败的终极解决指南:3步告别文件损坏烦恼 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 你是否有过这样的经历?在PCL2启动器中…...

【Flutter for OpenHarmony第三方库】Flutter for OpenHarmony 数据统计与用户行为分析功能适配与实现指南

Flutter for OpenHarmony 数据统计与用户行为分析功能适配与实现指南 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 摘要 在 OpenHarmony 生态持续扩张与 Flutter 跨平台开发深度融合的背景下,存量 Flutter 应用向鸿蒙终端迁移…...

别再傻傻print了!用tqdm给你的Python脚本加个进度条,代码瞬间专业

告别print调试!用tqdm打造专业级Python进度监控系统 在数据处理和批量任务中,我们常常需要监控长时间运行的循环进度。传统print语句虽然简单直接,但会导致终端输出混乱、难以估算剩余时间,更无法在Jupyter等环境中提供优雅的交互…...

labview框架下的产线MES系统:物料管理、排产计划与功能齐全的全方位管理

labview框架 产线MES系统 物料管理,排产计划,设备管理,报表管理,功能齐全 扫码追溯 PLC通信 数据库存储 标签打印最近在搞生产线自动化升级,发现用LabVIEW搭MES系统真香。这个可视化编程平台自带工业基因,处…...

用WildCard虚拟卡搞定GitHub Copilot付费订阅,实测避坑指南(含手续费提醒)

WildCard虚拟卡订阅GitHub Copilot全流程避坑指南 去年夏天,我在重构一个开源项目时第一次尝试了GitHub Copilot。当时就被它精准的代码补全能力震惊——直到付款环节才意识到,国内信用卡根本无法完成订阅。经过多次尝试和失败,最终通过WildC…...

S32K344 Flash Driver实战:手把手教你用C40_Ip库实现任意字节写入与扇区解锁

S32K344 Flash驱动深度实战:突破C40_Ip库8字节对齐限制的工程解决方案 从真实案例看Flash驱动的工程挑战 去年在为某新能源车厂开发OTA升级功能时,我们团队遇到了一个典型的嵌入式开发困境:S32K344微控制器的官方Flash驱动库C40_Ip强制要求所…...

Java的java.util.random.RandomGenerator随机数质量测试与统计特性验证

Java随机数生成器的质量测试与统计特性验证 在计算机科学中,高质量的随机数生成器(RNG)对密码学、模拟实验和游戏开发等领域至关重要。Java的java.util.random.RandomGenerator接口及其实现类(如L32X64MixRandom、Xoroshiro128Pl…...

如何用PyMICAPS将复杂气象数据转化为专业图表?

如何用PyMICAPS将复杂气象数据转化为专业图表? 【免费下载链接】PyMICAPS 气象数据可视化,用matplotlib和basemap绘制micaps数据 项目地址: https://gitcode.com/gh_mirrors/py/PyMICAPS 面对海量气象观测数据,你是否曾为如何将它们直…...

VSCode远程文件不同步?先别重装!2026版新增5层诊断树+自动修复CLI,3分钟定位root cause

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026远程文件同步优化概览 VSCode 2026 引入了基于增量哈希比对与端到端加密通道的全新远程同步引擎,显著降低高延迟网络下的文件传输抖动与冗余开销。该机制默认启用,无…...

别再死磕公式了!用Python+NumPy图解RMA算法中的Stolt插值核心

用PythonNumPy图解RMA算法:Stolt插值的视觉化实践 当你第一次接触合成孔径雷达(SAR)成像时,那些频域变换、相位补偿的数学推导是不是让你望而却步?特别是RMA(距离徙动算法)中的Stolt插值环节,往往成为理解整个算法的最大障碍。今天…...

不平衡分类问题评估:从指标选择到实战避坑

1. 不平衡分类问题的评估困境第一次处理信用卡欺诈检测项目时,我盯着99.7%准确率的模型结果沾沾自喜,直到业务方甩来一句"这模型根本抓不到欺诈交易"才如梦初醒。这就是典型的不平衡分类陷阱——当正负样本比例悬殊时(比如正常交易…...

3分钟速通:Apache Commons FileUpload 2.0如何彻底解决Java文件上传难题?

3分钟速通:Apache Commons FileUpload 2.0如何彻底解决Java文件上传难题? 【免费下载链接】commons-fileupload Apache Commons FileUpload is a robust, high-performance, file upload capability to your servlets and web applications 项目地址: …...

别再死记硬背了!深入浅出聊聊Vision Transformer里那个神秘的‘CLS Token’

解密Vision Transformer中的CLS Token:从设计哲学到实践智慧 在计算机视觉领域,Transformer架构的引入彻底改变了传统卷积神经网络(CNN)的统治地位。而Vision Transformer(ViT)中那个神秘的CLS Token&#…...

解决Blender到Unity FBX转换的终极指南:告别模型旋转错乱

解决Blender到Unity FBX转换的终极指南:告别模型旋转错乱 【免费下载链接】blender-to-unity-fbx-exporter FBX exporter addon for Blender compatible with Unitys coordinate and scaling system. 项目地址: https://gitcode.com/gh_mirrors/bl/blender-to-uni…...

Win11注册表修复:一键导入.reg文件,快速恢复右键新建txt功能(附文件下载)

Win11右键新建文本文档功能修复实战指南 每次右键想快速新建一个文本文档时,却发现菜单里少了这个选项,确实让人抓狂。这个问题在Win11上并不罕见,通常是由于注册表项损坏或记事本应用关联异常导致的。本文将带你深入了解问题根源&#xff0c…...

【收藏备用】2026年大模型岗位拆解+零基础入门指南,程序员转型/小白入行必看(附全套学习资料)

2026年作为AI大模型应用全面爆发的关键一年,这项技术早已跳出实验室的局限,深度融入互联网、金融、医疗、自动驾驶等各个行业,成为程序员突破职业瓶颈、小白零基础入行的黄金赛道🔥 相信很多人都有这样的困惑:“大模型…...

人类微生物组研究的终极解决方案:如何用curatedMetagenomicData快速完成标准化分析

人类微生物组研究的终极解决方案:如何用curatedMetagenomicData快速完成标准化分析 【免费下载链接】curatedMetagenomicData Curated Metagenomic Data of the Human Microbiome 项目地址: https://gitcode.com/gh_mirrors/cu/curatedMetagenomicData 你是否…...

告别理论!用一张‘眼图’看懂你的GTX链路信号质量(误码率、抖动、噪声容限全解析)

从眼图诊断到链路优化:GTX信号质量实战解码手册 当示波器屏幕上那个神秘的"眼睛"缓缓睁开时,它正在向你诉说整个高速链路的健康状态。这张由无数比特流叠加而成的图形,远比任何参数表格都更直观地揭示了信号在时域和幅值域的完整故…...