我正在为色度键(绿色屏幕)编写脚本,并使用Python和PIL(枕头)合成一些视频.我可以键入720p图像,但还有一些留在绿色溢出.可以理解,但我正在编写一个例行程序,以消除泄漏......但是我正在努力解决这个问题需要多长时间.我可以使用numpy技巧获得更好的速度,但我并不熟悉它.有任何想法吗?
这是我的鄙视程序.它需要一个PIL图像和一个敏感数字,但到目前为止我已经离开了它...它一直运作良好.我正以超过4秒的速度进入一个720p的框架,以消除这种溢出.为了比较,色度键例程每帧运行大约2秒.
def despill(img, sensitivity=1):
"""
Blue limits green.
"""
start = time.time()
print '\t[*] Starting despill'
width, height = img.size
num_channels = len(img.getbands())
out = Image.new("RGBA", img.size, color=0)
for j in range(height):
for i in range(width):
#r,g,b,a = data[j,i]
r,g,b,a = img.getpixel((i,j))
if g > (b*sensitivity):
out_g = (b*sensitivity)
else:
out_g = g
# end if
out.putpixel((i,j), (r,out_g,b,a))
# end for
# end for
out.show()
print '\t[+] done.'
print '\t[!] Took: %0.1f seconds' % (time.time()-start)
exit()
return out
# …Run Code Online (Sandbox Code Playgroud)