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

OpenCV HSV与RGB颜色模型的区别

HSV与RGB颜色模型的区别

HSV(Hue, Saturation, Value)和 RGB(Red, Green, Blue)是两种不同的颜色表示方式,主要区别如下:

对比项RGBHSV
定义基于红、绿、蓝三原色的混合基于色相(H)、饱和度(S)、明度(V)的直观描述
适用场景显示器、数字图像处理(计算机直接使用)调色板、图像编辑(更符合人类感知)
颜色调整修改R、G、B分量(不直观)调整H(颜色)、S(鲜艳度)、V(亮度)更直观
表示方式三个数值(0-255或者0-1)H(0-360°)、S(0-100%)、V(0-100%)
颜色空间线性叠加(加色模型)圆柱/圆锥模型(更接近人眼感知)
典型应用网页颜色(#RRGGBB)、计算机图形Photoshop 调色、颜色选择器

1. RGB(红绿蓝)

  • 原理:通过 红(R)、绿(G)、蓝(B) 三个分量的不同强度混合成各种颜色。

特点:

  • 加色模型(叠加越亮,如 R+G+B=白色)。
  • 适用于显示器、摄像头等电子设备。
  • 调整颜色不直观(比如想调“更深的红色”需要同时改 R、G、B)。

示例:

  • 纯红色:(255, 0, 0)
  • 黑色:(0, 0, 0)
  • 白色:(255, 255, 255)

2. HSV(色相、饱和度、明度)

  • 原理:用 色相(H)、饱和度(S)、明度(V) 描述颜色。
    • H(Hue):颜色类型(0°-360°,如 0°=红,120°=绿,240°=蓝)。
    • S(Saturation):颜色鲜艳程度(0%=灰色,100%=纯色)。
    • V(Value):亮度(0%=黑色,100%=最亮)。

特点

  • 更符合人咧对颜色的感知,调色更加直观
  • 适用于设计、美术、图像处理(如调整“饱和度”或“色相”)

实例

  • 纯红色: (0°, 100%, 100%)
  • 灰色:(0°, 0%, 50%)
  • 深蓝色:(240°, 100%, 50%)

3、相互转换

  • RGB → HSV:计算色相角度、饱和度、亮度。
  • HSV → RGB:根据 H、S、V 计算对应的 R、G、B 值。

代码实现

import colorsys
# RGB 转 HSV(输入范围 0-1)
h, s, v = colorsys.rgb_to_hsv(1.0, 0.0, 0.0)  # 红色 → (0.0, 1.0, 1.0)
# HSV 转 RGB
r, g, b = colorsys.hsv_to_rgb(0.0, 1.0, 1.0)  # 红色 → (1.0, 0.0, 0.0)
import cv2 as cv
#读图
cat = cv.imread('../../images/cat1.png')
#转灰度
gray = cv.cvtColor(cat, cv.COLOR_BGR2GRAY)
print(gray.shape)
cv.imshow('gray', gray)
#转HSV
hsv = cv.cvtColor(cat, cv.COLOR_BGR2HSV)
cv.imshow('hsv', hsv)
#转RGB
rgb = cv.cvtColor(cat, cv.COLOR_BGR2RGB)
cv.imshow('rgb', rgb)
cv.waitKey(0)
cv.destroyAllWindows()

4、如何选择

  • 用 RGB:编程、网页设计、显示器显示。
  • 用 HSV:调色、图像处理(如调整亮度/饱和度)、美术设计。

HSV 的优势在于 更符合人类直觉,比如:

  • 想调“浅蓝色”?增加 V(明度)。

  • 想调“更鲜艳的绿色”?增加 S(饱和度)。

  • 想换颜色?直接改 H(色相)。

而 RGB 需要同时调整多个分量,不够直观。

http://www.xdnf.cn/news/16950.html

相关文章:

  • Elasticsearch+Logstash+Filebeat+Kibana单机部署
  • 论文笔记:Bundle Recommendation and Generation with Graph Neural Networks
  • OpenCV 全解读:核心、源码结构与图像/视频渲染能力深度对比
  • 电力系统分析笔记:发电机与变压器的数学建模与运行状态详解
  • 图漾AGV行业常用相机使用文档
  • Unity —— Android 应用构建与发布​
  • 边缘计算优化!陌讯轻量化模型实现路面裂缝误检率↓78%
  • Java函数式编程之【Stream终止操作】【中】【通用约简reduce】
  • 机器学习sklearn:聚类
  • Python编程基础与实践:Python函数编程入门
  • 通过解决docker network connect实现同一个宿主机不同网络的容器间通信
  • Flutter dart运算符
  • synchronized 深度剖析:从语法到锁升级的完整演进
  • 第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年1月22日真题
  • shell脚本的语法使用及例题
  • Java函数式编程之【Stream终止操作】【下】【三】【收集操作collect()与分组分区】【下游收集器】
  • 一个可以检测本机的字节顺序,并对任意数据进行字节顺序的反转操作的代码。
  • 热能小车cad【12张】三维图+设计说明书
  • 解决IDEA无法克隆GitHub上的工程的问题
  • STM32F103C8T6 BC20模块采集温湿度和经纬度发送到ONENET
  • AI+向量化
  • 《React Router深解:复杂路由场景下的性能优化与导航流畅性构建》
  • 全方位监控与智能控制应用
  • Linux文件操作:从C接口到系统调用
  • 浏览器【详解】自定义事件 CustomEvent
  • 台式机 Server 20.04 CUDA11.8
  • Linux 用户与组管理及权限委派
  • Blender 智能模型库 | 人物·建筑·场景·机械等 近万高精度模型
  • 嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)
  • AG-UI 协议全面解析--下一代 AI Agent 交互框架医疗应用分析(上)