首頁 >後端開發 >C++ >如何在 0-255 範圍內將 RGB 轉換為 HSV 並再次轉換回來?

如何在 0-255 範圍內將 RGB 轉換為 HSV 並再次轉換回來?

Barbara Streisand
Barbara Streisand原創
2024-12-11 18:24:15825瀏覽

How to Convert RGB to HSV and Back Again Within the 0-255 Range?

在0-255 範圍內將RGB 轉換為HSV 以及HSV 轉換為RGB

在RGB(紅、綠、藍)之間轉換顏色表示HSV(色相、飽和度、明度)對於影像處理和電腦圖形學至關重要。此轉換需要轉換特定範圍內的顏色值以確保準確轉換。

RGB 到HSV 轉換

RGB 到HSV 轉換涉及以下步驟:

  1. 將RGB 值除以255 進行縮放它們介於0 和1 之間。
  2. 找出最小值和最大值:決定 RGB 分量中的最小值和最大值。
  3. 計算值 (V): 此值等於最大RGB
  4. 計算飽和度(S):使用下列公式計算飽和度:

    S = (V - min) / V
  5. 計算色調(H):根據RGB的相對值使用條件語句來決定色調組件:

    if (R >= G && R >= B):
     H = (G - B) / (V - min)
    elif (G >= R && G >= B):
     H = 2 + (B - R) / (V - min)
    else:
     H = 4 + (R - G) / (V - min)
  6. 轉換為度數:將色調值乘以60 以獲得度數。

HSV 到RGB 轉換

HSV 到RGB 的轉換過程如下:

  1. 確保色調在0-360度範圍內,飽和度和明度在 0-1 範圍內。
  2. 找出色調索引:決定色調的整數索引色調:

    i = int(H / 60.0)
  3. 計算小數部分:計算色調的小數部分:

    ff = H / 60.0 - i
  4. 設定默認RGB值:

    R = G = B = V
  5. 計算RGB 值: 根據色調索引調整RGB 值:

    if (i == 0):
     B = p
    elif (i == 1):
     R = q
    elif (i == 2):
     G = p
    elif (i == 3):
     R = p
    elif (i == 4):
     B = t
    elif (i == 5):
     G = p
  6. 標準化RGB 值:將RGB 值乘以255 恢復範圍0-255。

以上是如何在 0-255 範圍內將 RGB 轉換為 HSV 並再次轉換回來?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn