2012-12-26 30 views
0

我想在Python中實現這個功能(改變HSL的顏色化勾選),最好使用PIL或可能numpy。Python:想要改變圖像HSL像photoshop

enter image description here

有人能解釋這是如何工作?

據我所知,是使用內置函數color_to_hsl獲取hsl值,改變它,然後將ti轉換回rgb,最後寫入單個像素。

任何線索讓它更接近?

+0

隨着彩色化選中複選框,我想你與灰度值從原來的圖像亮度工作,直接設置色調和飽和度的對話框中顯示。對不起,我沒有時間留下答案,但這確實很簡單。 –

+0

相關:http://stackoverflow.com/questions/6845374/how-to-colorize-via-hsl-colors/ –

回答

0
from PIL import Image 
import colorsys 

def colorize(im, h, s, l_adjust): 
    h /= 360.0 
    s /= 100.0 
    l_adjust /= 100.0 
    if im.mode != 'L': 
     im = im.convert('L') 
    result = Image.new('RGB', im.size) 
    pixin = im.load() 
    pixout = result.load() 
    for y in range(im.size[1]): 
     for x in range(im.size[0]): 
      l = pixin[x, y]/255.99 
      l += l_adjust 
      l = min(max(l, 0.0), 1.0) 
      r, g, b = colorsys.hls_to_rgb(h, l, s) 
      r, g, b = int(r * 255.99), int(g * 255.99), int(b * 255.99) 
      pixout[x, y] = (r, g, b) 
    return result 

Original Colorized

+0

非常感謝!我是圖像處理的初學者,將來會有更多的圖像處理需要我做。你介意在這個領域分享一些鏈接/書籍嗎? – user469652

+0

@ user469652,我不確定我可以幫助任何教材,因爲多年來我只是零碎地拾起它。我很好奇,因爲我沒有Photoshop,我的例子是否與它出現的相匹配? –