簡體   English   中英

根據RGB值更改圖像的顏色

[英]Changing the color of an image based on RGB value

情況:

您有一個主色的圖像,您需要根據給定的rgb值將其轉換為另一個。

問題:

這種顏色有許多不同但相似的色調也需要轉換,這使得簡單的“全部改變(0,0,0) - 像素 - ( - 0,100,200)”解決方案毫無價值。

如果有人能指出我正確的方向,那么算法或圖像處理技術將使這項任務變得更易於管理。

我一直在使用PIL來嘗試這個問題,但任何一般的提示都會很好。

編輯:

另外,我已經使用了這個其他的答案( 用Python PIL更改圖像色調 )來做我要求的部分(色調變化),但它沒有考慮飽和度或值

編輯: http//dpaste.org/psk5C/顯示使用pil來查看我必須使用的rgb值以及與之一起使用的hsv值。

請參閱鏈接問題中的解決方案:您可以調整shift_hue()函數來調整色調,飽和度和值,而不僅僅是調整色調。 那應該允許您根據需要移動所有這些參數。

原版的:

def shift_hue(arr, hout):
    r, g, b, a = np.rollaxis(arr, axis=-1)
    h, s, v = rgb_to_hsv(r, g, b)
    h = hout
    r, g, b = hsv_to_rgb(h, s, v)
    arr = np.dstack((r, g, b, a))
    return arr

調整版本:

def shift_hsv(arr, delta_h, delta_, delta_v):
    r, g, b, a = np.rollaxis(arr, axis=-1)
    h, s, v = rgb_to_hsv(r, g, b)
    h += delta_h
    s += delta_s
    v += delta_v
    r, g, b = hsv_to_rgb(h, s, v)
    arr = np.dstack((r, g, b, a))
    return arr

假設您知道原始圖像的基色和所需的目標顏色,則可以輕松計算增量:

base_h, base_s, base_v = rgb_to_hsv(base_r, base_g, base_b)
target_h, target_s, target_v = rgb_to_hsv(target_r, target_g, target_b)
delta_h, delta_s, delta_v  = target_h - base_h, target_s - base_s, target_v - base_v

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM