[英]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.