2015-11-21 64 views
1

我想調整Python的OpenCV中的對比度,就像在Gimp中一樣。我想這樣做: enter image description hereOpenCV像Gimp中的亮度和對比度

在瘸子它很簡單。我只是使用Colors->Brightness & Contrast,並設置對比127。 但我不知道如何在Python中做到這一點,我找不到解決這個問題的辦法。

回答

1

檢查here。公式是:

new_value = (old_value - 0.5) × contrast + 0.5 + brightness 

在Python中,你可以很容易地將這些應用爲矩陣運算。請注意,這裏的像素值在[0,1]中,所以當範圍在[0,255]時,0.5等於127。

在相同的鏈接也被報告的代碼,以像素爲單位的運算(只複製的完整性):

function transform(value, brightness, contrast) 
    return (value-0.5)*contrast+0.5+brightness 
end 

function transform_rgb(r,g,b, brightness, contrast) 
    return transform(r, brightness, contrast), transform(g, brightness, contrast), transform(b, brightness, contrast) 
end 

function bcontrast_get_rgb(x,y,brightness, contrast) 
    r,g,b=get_rgb(x,y) 
    return transform_rgb(r,g,b, brightness, contrast) 
end 

function bcontrast(brightness, contrast) 
    for y=0, height-1 do 
     for x=0, width-1 do 
     set_rgb(x,y, bcontrast_get_rgb(x,y,brightness,contrast)) 
     end 
    end 
    flush() 
end 

bcontrast(0.25, 2.0) 
+0

什麼是birghtness和對比度值的範圍是多少?在Gimp中,這些值範圍從-127到127.但是與bcontrast(0.25,2.0)似乎不在這個領域。有什麼建議麼? –

+0

我不知道。你應該檢查這個gimp源代碼。 (0,10)中的對比度和(-1,1)中的亮度可能是有意義的。您還應該注意將0鉗位到負像素值,並將其鉗位到1個更大的值。 @ChristianGold – Miki

相關問題