如果首先將PIL圖像轉換爲numpy數組,那麼速度會更快。這裏是你如何能零的所有像素,低於10的值:
>>> import numpy as np
>>> arr = np.array(img)
>>> arr[arr < 10] = 0
>>> img.putdata(arr)
或者,當你在您的評論說,這裏是你黑掉圖像的上半部分:
>>> arr[:arr.shape[0]/2,:] = 0
最後,由於您正在進行視頻處理,因此請注意,您不必遍歷各個幀。假設您有10張4x4圖像幀:
>>> arr = np.ones((10,4,4)) # 10 all-white frames
>>> arr[:,:2,:] = 0 # black out the top half of every frame
>>> a
array([[[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]],
[[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]],
...
你嘗試過numpy和數組嗎? – lolopop
條件是什麼?它取決於行列索引還是像素值? –
好吧,我只想將圖像像素的一半設置爲黑色。我只寫了一個方式來顯示我的問題,而不是實際的代碼 –