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 需要同時調整多個分量,不夠直觀。