如何向Numpy数组添加新维度?

2024-04-23 06:45:48 发布

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

我从一个数字图像阵列开始。

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)

将下一帧(即下一组图像数据,另一个480x640x3数组)添加到初始数组中的最佳方法是什么?


Tags: 数据intest图像img视频rgb数组
3条回答

您可以在前面创建一个大小正确的数组并填充它:

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)形状的数组。

或者

image = image[..., np.newaxis]

@dbliss' answer中,您还可以使用^{}之类的

image = np.expand_dims(image, <your desired dimension>)

例如(取自上面的链接):

x = np.array([1, 2])

print(x.shape)  # prints (2,)

那么

y = np.expand_dims(x, axis=0)

收益率

array([[1, 2]])

以及

y.shape

给予

(1, 2)

您正在询问如何将维度添加到NumPy数组中,以便该维度可以增长以容纳新数据。可以按如下方式添加维度:

image = image[..., np.newaxis]

相关问题 更多 >