【问题标题】:How to add in a multi dimentional array in Python?如何在 Python 中添加多维数组?
【发布时间】: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


【解决方案1】:

使用numpy.dstack在第三轴堆叠数组:

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)

【讨论】:

    【解决方案2】:

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

    result_array= []
    

    然后我们将 curFrame 附加到 result_array 中:

    result_array.append(curFrame)
    

    【讨论】:

      猜你喜欢
      • 2017-09-04
      • 2019-12-08
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多