def dehaze(img, light_intensity, windowSize, t0, w,s1,s2,siz,size1,dark_channel):
global outimg
for y in range(s1,siz):
for x in range(s2,size1):
t = 1.0 - (w * img.item(y, x, dark_channel) / light_intensity)
outimg.itemset((y,x,0), max(0, min(((img.item(y,x,0) - light_intensity) / max(t, t0) + light_intensity), 255)))
outimg.itemset((y,x,1), max(0, min(((img.item(y,x,1) - light_intensity) / max(t, t0) + light_intensity), 255)))
outimg.itemset((y,x,2), max(0, min(((img.item(y,x,2) - light_intensity) / max(t, t0) + light_intensity), 255)))
我在python中实现了一个程序,我希望实时处理实时视频。但上述功能需要1.5秒才能处理一帧。任何人都可以帮助我如何获得我的欲望输出? 如果有人可以帮助我,我将感激不尽。
答案 0 :(得分:0)
我的第一个答案是“不要使用Python”。根据官方文件
与索引语法相比,如果必须这样做,则itemset可以将标量放入ndarray中的特定位置。但是,通常不鼓励这样做:除了其他问题之外,它使代码的外观复杂化。此外,在循环中使用itemset(和item)时,请确保将方法分配给局部变量,以避免在每次循环迭代时查找属性。
因此,你至少可以拥有类似的东西:
itemset = outimg.itemset
for ...
itemset(...)
至少,您将加快属性查找速度。同样的观察结果适用于img.item
。另一方面,您不需要计算3次max(t, t0)
,因此您也可以将其存储在变量中。
还有一个观察结果:是否需要有一个全局变量?