OpenCV HSV与RGB颜色模型的区别

发布于:2025-08-07 ⋅ 阅读:(17) ⋅ 点赞:(0)

HSV与RGB颜色模型的区别

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

对比项 RGB HSV
定义 基于红、绿、蓝三原色的混合 基于色相(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 需要同时调整多个分量,不够直观。


网站公告

今日签到

点亮在社区的每一天
去签到