如何在Python中添加多维数组?

2024-04-27 03:02:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始用python做我的项目。你知道吗

我想通过考虑在整个视频中出现率较高的每个像素的值来提取视频中的背景。为此,我想将每帧的像素值添加到前一帧中。你知道吗

为了使它更简单,例如,我有一个总帧数为400的视频。框架尺寸为100X300。对于每个循环,我希望通过当前帧的值附加(连接)。因此,在每次循环(用于读取视频中的帧)之后,数组的大小应在第三维度中增加1,并且在读取所有帧之后,我应该有一个大小为(100X300X400)->;100行、300列和400深度的数组!你知道吗

然后,我将计算每个像素的直方图。你知道吗

非常感谢你的帮助。你知道吗

我使用的是opencv3.1,python2.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()

Tags: importget视频np像素数组resultwidth
2条回答

谢谢任何帮助我的人。我找到了答案。 在While()循环之前,我们定义了一个空数组:

result_array= []

然后我们通过以下方式将curFrame附加到结果数组中:

result_array.append(curFrame)

使用^{}在第三轴中堆叠数组:

In [1]: import numpy

In [2]: d = numpy.random.random((5,5))

In [3]: d.shape
Out[3]: (5, 5)

In [4]: for i in range(10): d=numpy.dstack((d,numpy.random.random((5,5))))

In [5]: d.shape
Out[5]: (5, 5, 11)

相关问题 更多 >