【发布时间】:2021-07-15 20:22:02
【问题描述】:
我正在尝试为视频创建中值过滤器。目标是每 5 帧创建一个图像,其像素值对应于 5 帧像素的中值。
我可以使用几个 for 循环来做到这一点,但我想要一种更快/更简单的方法来完成相同的结果。有什么帮助吗?
更新:
我尝试通过定义要应用中位数的轴来使用 np.median 函数。当我用较小的数组对其进行测试时,它工作得很好,但是当我转换到图像时它就不起作用了。
w = 5 # window
n = int(len(data)/w) # new number of frames
fdata = np.zeros([n, len(data[0]), len(data[0][0])])
for i in range(0, n):
it_data = data[ i*5 : 5*i+5 ]
fdata[i] = np.median(it_data, axis=0)
我收到的错误在最后一行:
>>> ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
【问题讨论】:
-
我会检查 numpy 是否可以做类似的事情,目前我在 MatLab 中找到了它,看看这个 question 和 this other,但不是在 Python 中
标签: python image video filter median