最初にPILイメージをnumpy配列に変換すると、これははるかに高速になります。値が10未満のすべてのピクセルをゼロにする方法は次のとおりです。
>>> import numpy as np
>>> arr = np.array(img)
>>> arr[arr < 10] = 0
>>> img.putdata(arr)
または、コメントで述べたように、画像の上半分を黒く塗りつぶします。
>>> arr[:arr.shape[0] / 2,:] = 0
最後に、ビデオ処理を行っているので、個々のフレームをループする必要もないことに注意してください。4x4画像のフレームが10個あるとします。
>>> 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.]],
...