Python 使用Numba加速帧过滤

Python 使用Numba加速帧过滤,python,numpy,numba,Python,Numpy,Numba,我有下面的代码,我在视频的多个帧中获取每个像素,并将其通过低通滤波器(基本上是每个像素值的时间滤波)。然后,我获取这些过滤后的像素,并在buf2数组中创建新帧 import cv2, numpy as np from scipy.signal import butter, lfilter, freqz from numba import jit # Filter requirements. order = 1 fs = 30.0 # sample rate, Hz cutoff =

我有下面的代码,我在视频的多个帧中获取每个像素,并将其通过低通滤波器(基本上是每个像素值的时间滤波)。然后,我获取这些过滤后的像素,并在
buf2
数组中创建新帧

import cv2, numpy as np
from scipy.signal import butter, lfilter, freqz
from numba import jit

# Filter requirements.
order = 1
fs = 30.0       # sample rate, Hz
cutoff = 0.3  # desired cutoff frequency of the filter, Hz

buf2 = np.empty((frameCount, frameHeight, frameWidth, 3), np.dtype('uint8'))

for j in range(rows_in_frame):
    for k in range(columns_in_frame):
        l = array_containing_all_frames[:, j, k, 1] #Only looking at green channel
        y = butter_lowpass_filter(l, cutoff, fs, order)
        buf2[:, j, k, 1] = y
根据帧的大小和帧数,这需要较长的运行时间。我希望尽可能地加快速度,因此我一直在尝试将Numba应用于以下问题:

@jit(nopython=True)
def butter_lowpass_filter(data, cutoff, fs, order=5):
    b, a = butter_lowpass(cutoff, fs, order=order)
    y = lfilter(b, a, data)
    return y
但是,它只返回一个错误,称为
TypingError:Failed in nopython模式管道(步骤:nopython frontend)非类型化全局名称“lfilter”:无法确定类型的

我想知道在我的情况下,我应该如何正确地使用Numba来尽可能地加快整个过程