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

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.dtcms.com/a/311083.html

相关文章:

  • 深度学习核心:神经网络-激活函数 - 原理、实现及在医学影像领域的应用
  • 【matlab例程】无迹粒子滤波(UPF)的例程,用于三维环境下多雷达目标跟踪,非线性系统
  • Maven引入其他模块无法调用,出现Unable to find main class
  • [Windows] 微软.Net运行库离线合集包 Microsoft .Net Packages AIO v13.05.25
  • chrome的数据采集插件chat4data的使用
  • Vue 服务端渲染 Nuxt 使用详解
  • WinForm之ListBox 控件
  • Android内存优化核弹方案:LeakCanary 3.0定制化与Heap Dump自动化分析实战
  • WordPress AI写作插件开发实战:从GPT集成到企业级部署
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博舆情数据可视化分析-热词情感趋势柱状图
  • uniapp倒计时计算
  • 【Linux系统】详解,进程控制
  • NCV8402ASTT1G自保护N沟道功率MOSFET安森美/ONSEMI 过流过温保护汽车级驱动NCV8402ASTT1
  • 【论文精读】3D Gaussian Splatting for Real-Time Radiance Field Rendering
  • 八股取士-go
  • Angular初学者入门第一课——搭建并改造项目(精品)
  • MySQL(174)如何理解MySQL的多版本并发控制(MVCC)?
  • Spring框架与深度学习实战应用
  • 数字人开发02--前端服务配置
  • 【Java】不允许直接操作数据表中的数据,开发前台界面来实现对多个数据表的增删改查
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第三天(JavaScript)
  • Python编程基础与实践:Python模块与包入门实践
  • MyBatisPlus之核心注解与配置
  • JP3-3-MyClub后台后端(三)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘seaborn’问题
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频摘要生成与智能检索优化进阶(377)
  • 2025-08 安卓开发面试拷打记录(面试题)
  • rabbitmq消息队列详述
  • 关于echarts的性能优化考虑
  • Pytorch-02数据集和数据加载器的基本原理和基本操作