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

OpenCV 颜色空间(RGB/BGR/HSV)超详细用法教程

OpenCV 颜色空间(RGB/BGR/HSV)超详细用法教程

一、核心概念全解析

1. RGB vs BGR:最容易踩的坑

特性RGBOpenCV 默认 BGR
通道顺序红®→绿(G)→蓝(B)蓝(B)→绿(G)→红®
适用场景人眼感知、PIL、matplotlib、网页、相机原生OpenCV 内部存储、imread/imshow默认格式
取值范围0~255(8位图像)0~255(8位图像)

为什么 OpenCV 用 BGR?
OpenCV 早期开发时,摄像头/相机厂商普遍使用 BGR 格式存储图像,为了兼容历史硬件,OpenCV 沿用了 BGR 顺序,成为行业默认。


2. HSV/HSB/HSL:面向图像处理的颜色空间

这三个都是基于人类视觉感知的颜色空间,核心是把「亮度」和「颜色」分离,非常适合做颜色分割、目标检测、抠图

核心参数定义
分量全称含义OpenCV 取值范围
HHue(色相)颜色本身(红、绿、蓝等)0179(为了适配8位,把标准0360°除以2)
SSaturation(饱和度)颜色的鲜艳程度(0=灰,255=最纯)0~255
VValue(明度/亮度)颜色的明暗程度(0=黑,255=最亮)0~255

💡 补充:HSB 中的 B 是 Brightness(亮度),和 HSV 的 V 本质一致;HSL 中的 L 是 Lightness(亮度),计算方式略有不同,OpenCV 主流用 HSV。


二、核心转换函数

1. BGR ↔ RGB 转换(最常用)

# BGR → RGB(用于matplotlib显示、PIL处理)img_rgb=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2RGB)# RGB → BGR(用于OpenCV保存/显示)img_bgr=cv2.cvtColor(img_rgb,cv2.COLOR_RGB2BGR)

2. BGR ↔ HSV 转换(颜色分割核心)

# BGR → HSV(必须先转,才能做颜色检测)img_hsv=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2HSV)# HSV → BGR(转回OpenCV默认格式显示)img_bgr=cv2.cvtColor(img_hsv,cv2.COLOR_HSV2BGR)

三、实战:3个高频场景完整代码

场景1:基础演示——BGR/RGB显示对比(避坑)

importcv2importmatplotlib.pyplotasplt# 1. OpenCV imread 读取的是BGR格式img_bgr=cv2.imread("test.jpg")# 2. 直接用matplotlib显示BGR(颜色错乱)plt.subplot(121)plt.imshow(img_bgr)plt.title("BGR直接显示(颜色错误)")plt.axis("off")# 3. 转RGB后再显示(颜色正常)img_rgb=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2RGB)plt.subplot(122)plt.imshow(img_rgb)plt.title("RGB正确显示")plt
http://www.cnnetsun.cn/news/1675182.html

相关文章:

  • HPE OneView 11.1 - HPE 服务器、存储和网络设备集中管理软件
  • PyCINRAD气象雷达数据处理解决方案:从数据解码到专业可视化的完整技术实现
  • 从GPT-3到ChatGPT:少样本学习的演进之路,给开发者的启示与避坑指南
  • 5大维度重构华硕笔记本控制体验:写给硬件爱好者的GHelper实战指南
  • TEKLauncher:重新定义方舟生存进化游戏管理的智能解决方案
  • CentOS7服务器流量飙升?别慌,用iftop+nload五分钟定位‘吃流量’的进程
  • VueRouter实战:从‘我的音乐’到‘朋友’页面,手把手教你处理组件命名和路由规划的那些坑
  • Trae国内版初体验:用豆包大模型写Python爬虫,比Copilot香吗?
  • Emby高级功能完全解锁指南:emby-unlocked让媒体服务器焕发新生
  • 效率提升:告别卡顿,用快马生成win11右键菜单高效定制工具
  • 5个秘诀让你轻松玩转QtScrcpy:安卓投屏控制从入门到精通
  • __slots__
  • JPEGView:让专业图像处理不再受限于设备与技术门槛
  • C++ 契约编程(Contracts):利用 C++20/23 语法在函数接口强制定义不变式(Invariants)以增强软件鲁棒性
  • 外卖 CPS 佣金结算系统:Java 分布式事务处理与数据一致性保障
  • javaweb在线考试管理系统的设计与实现前台329fgzk
  • 从uboot到内核启动:深度解析【system halted】与解压失败的典型场景
  • 创业公司vs大厂:不同阶段的职业选择逻辑
  • 突破MRI仿真壁垒:开源平台的技术革新与应用指南
  • Qwen3.5-2B部署优化教程:显存占用压至3.2GB的GPU算力适配技巧
  • Python 3.15 新突破:frozendict 带来字典应用新可能
  • [CD33(Siglec-3)] 靶点技术深度解析:免疫抑制机制、ADC药物开发与临床转化
  • Qwen2.5-14B 模型实战指南:从环境配置到高级应用
  • 效率飙升:用快马AI将Apifox的Mock接口自动转化为Vue3前端代码
  • Qwen3-14B WebUI权限分级:管理员/普通用户/只读访客三类角色配置
  • 告别繁琐命令行:用快马ai一键生成jdk环境验证项目原型
  • 猫抓扩展深度诊断指南:从症状到解决方案的系统分析
  • 数字孪生技术的测试方法论:虚拟与现实的同步
  • 安全测试左移:在CI/CD中集成安全扫描
  • 213.udp传包出错解决办法