【发布时间】:2016-11-08 04:49:37
【问题描述】:
我刚刚开始用 python 做我的项目。
我想通过考虑在整个视频中出现率较高的每个像素的值来提取视频中的背景。为此,我想将每一帧的像素值添加到前一帧中。
为了更简化,例如,我有一个总帧数为 400 的视频。帧大小为 100X300。对于每个循环,我想通过当前帧的值附加(连接)。因此,在每个循环之后(用于读取视频中的帧),数组的大小应该在第三维增加 1,并且在读取所有帧之后,我应该有一个大小为 (100X300X400)-> 数组的数组100 行、300 列和 400 深度!
然后,我将计算每个像素的直方图。
非常感谢您的帮助。
我正在使用 OpenCV 3.1 和 Python 2.7.12,使用 Pycharm。
import cv2
import numpy as np
c = cv2.VideoCapture('NonStop_stab.mp4')
width = c.get(cv2.CAP_PROP_FRAME_WIDTH)
height = c.get(cv2.CAP_PROP_FRAME_HEIGHT)
numOfFrame= c.get(cv2.CAP_PROP_FRAME_COUNT)
fps= c.get(cv2.CAP_PROP_FPS)
size = (int(width), int(height))
_, f = c.read()
prevFrame= f
result_array= prevFrame
while c.isOpened():
#Here is the part I am asking
result_array = np.append(result_array, [prevFrame])
#
ret, f = c.read()
curFrame= f
if ret == True:
...['Do Something']
k = cv2.waitKey(20)
if k == 27:
print result_array.shape
break
else:
break
cv2.destroyAllWindows()
c.release()
out.release()
【问题讨论】:
-
您能否展示您目前所编写的代码,并通过引用您的代码来解释哪些领域给您带来了困难?
-
我添加了我目前拥有的代码。我刚刚使用了 append() 但结果并不像我想要的那样。 “result_array.shape”的输出类似于 (3185L,)!
标签: python arrays opencv video multidimensional-array