2014-10-20 54 views
0

我正在嘗試更改項目整體圖像的RGB。目前,我正在使用測試文件,然後將其應用於實際的圖像。我想測試RGB的不同值,但首先要從三者的平均值開始。我會如何去做這件事?如果需要,我還安裝了其他模塊,如scipy,numpy,matplotlib等。由於Python成像處理(PIL) - 更改圖像的整體RGB

from PIL import Image, ImageFilter 

test = Image.open('/Users/MeganRCunninghan/Pictures/4th-of-July-Wallpaper.ppm') 
test.show() 
test.getrgb() 

回答

0

假設你的圖像存儲爲numpy.ndarray(帶打印類型(測試)測試此)...

圖像將通過NxMx3陣列來表示。基本上這意味着你有一個N-M圖像,顏色深度爲你的RGB值。以這三個數字的平均值爲例,您將得到一個NxMx1陣列,其中1是現在的平均強度。 Numpy做得非常好:

test = test.mean(2) 

給出的參數2指定了取平均值的維數。它可以是0,1或2,因爲你的圖像矩陣是3維的。這應該返回一個NxM數組。你基本上會留下一個灰度,(顏色深度爲1)的圖像。嘗試顯示返回的值!如果您獲得Nx3或Mx3,則您知道您剛剛取得了錯誤軸上的平均值。請注意,您可以檢查numpy的陣列的尺寸搭配:

test.shape 

形狀將是描述你的圖像的尺寸的元組。

+0

我能夠成功地做到這一點,我將如何能夠顯示或看到與此變化的圖像? – Megan 2014-10-20 01:50:58

+1

經過一番研究,似乎PIL使用自己的圖像類型,而不是使用numpy數組來存儲圖像。看看圖像類型[這裏](http://effbot.org/imagingbook/image.htm)的文檔,似乎沒有'平均'方法,所以我上面寫的可能無法正常工作。但是,請查看該頁面並閱讀「轉換」方法。這將提供你所需要的。嘗試'test = test.convert(mode)'然後'test.show()'文檔沒有描述'模式'應該是什麼樣的,所以你需要嘗試不同的值,但其中一個應該轉換灰度爲你。 – 2014-10-20 02:08:59

+0

我會試試這個!當我做了一些研究時,我確實看到了轉換方法,但並不確定它是否適用,我給它一個鏡頭謝謝 – Megan 2014-10-20 02:25:50