如何加快我的python progrm

时间:2018-06-05 06:21:15

标签: python live-streaming

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秒才能处理一帧。任何人都可以帮助我如何获得我的欲望输出? 如果有人可以帮助我,我将感激不尽。

1 个答案:

答案 0 :(得分:0)

我的第一个答案是“不要使用Python”。根据官方文件

  

与索引语法相比,如果必须这样做,则itemset可以将标量放入ndarray中的特定位置。但是,通常不鼓励这样做:除了其他问题之外,它使代码的外观复杂化。此外,在循环中使用itemset(和item)时,请确保将方法分配给局部变量,以避免在每次循环迭代时查找属性。

因此,你至少可以拥有类似的东西:

itemset = outimg.itemset
for ...
    itemset(...)

至少,您将加快属性查找速度。同样的观察结果适用于img.item。另一方面,您不需要计算3次max(t, t0),因此您也可以将其存储在变量中。

还有一个观察结果:是否需要有一个全局变量?

相关问题