我必须计算来自一段时间(真实)循环的前30帧的平均值(平均值)。 如何仅在第四维小于30或没有第四维时才将第二条件转化为真? 还有其他优化代码的方法吗? frame.shape =(480,640,3)。值为0到255。
if isFirst == True:
first_frames = frame
isFirst == False
if first_frames.shape[3] < 30:
np.append(first_frames, frame, axis=3)
avg_frames = np.mean(first_frames, axis=3)
new_frame = frame - avg_frames
答案 0 :(得分:1)
我建议初始化一个数组来存储所有帧的运行总和,直到前30帧,为此我们可以有一个循环迭代范围。在每个循环结束时,我们将通过将运行总和除以循环迭代器来计算平均帧。就这样!我们的想法是通过使用3D
数组来存储求和而不是附加到昂贵的4D阵列上来优化内存。
因此,实施将是 -
# Initialize array for storing running summation
first_frames = np.zeros((480,640,3),dtype=np.uint64)
for i in range(30): # Runs until first 30 frames
first_frames += frame # Add each frame
new_frame = frame - first_frames/float(i)