137

私は画像の派手な配列から始めています。

In[1]:img = cv2.imread('test.jpg')

形状は、640x480 RGB 画像に期待されるものです。

In[2]:img.shape
Out[2]: (480, 640, 3)

ただし、私が持っているこの画像は、100 フレームの長さのビデオのフレームです。理想的には、このビデオのすべてのデータを含む単一の配列が必要img.shapeです(480, 640, 3, 100).

次のフレーム (つまり、次の画像データ セット、別の 480 x 640 x 3 配列) を最初の配列に追加する最良の方法は何ですか?

4

10 に答える 10

159

NumPy 配列に次元を追加する方法を尋ねているので、その次元を拡張して新しいデータに対応させることができます。ディメンションは次のように追加できます。

image = image[..., np.newaxis]
于 2014-09-10T00:47:26.693 に答える
31

前もって正しいサイズの配列を作成し、それを埋めることができます:

frames = np.empty((480, 640, 3, 100))

for k in xrange(nframes):
    frames[:,:,:,k] = cv2.imread('frame_{}.jpg'.format(k))

フレームが特定の方法で名前が付けられた個々の jpg ファイルである場合 (この例では、frame_0.jpg、frame_1.jpg など)。

(nframes, 480,640,3)代わりに整形配列を使用することを検討してください。

于 2013-06-30T21:24:25.357 に答える
1

私はこのアプローチに従いました:

import numpy as np
import cv2

ls = []

for image in image_paths:
    ls.append(cv2.imread('test.jpg'))

img_np = np.array(ls) # shape (100, 480, 640, 3)
img_np = np.rollaxis(img_np, 0, 4) # shape (480, 640, 3, 100).
于 2016-06-21T07:44:53.740 に答える