Numpy展平RGB图像阵列

时间:2016-05-01 14:45:34

标签: python arrays numpy image-processing

我有1000个RGB图像(64X64),我想将其转换为(m,n)数组。

我用这个:

import numpy as np
from skdata.mnist.views import OfficialImageClassification
from matplotlib import pyplot as plt
from PIL import Image                                                            
import glob
import cv2

x_data = np.array( [np.array(cv2.imread(imagePath[i])) for i in range(len(imagePath))] )
print x_data.shape

这给了我:(1000, 64, 64, 3)

现在,如果我这样做:

pixels = x_data.flatten()
print pixels.shape

我得到:(12288000,)

但是,我需要一个包含以下尺寸的数组:(1000, 12288)

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:6)

在将reshape()应用于展平数组后应用numpy方法flatten()

  x_data = np.array( [np.array(cv2.imread(imagePath[i])) for i in range(len(imagePath))] )

  pixels = x_data.flatten().reshape(1000, 12288)
  print pixels.shape

答案 1 :(得分:5)

试试这个:

d1, d2, d3, d4 = x_data.shape

然后使用numpy.reshape()

x_data_reshaped = x_data.reshape((d1, d2*d3*d4))

x_data_reshaped = x_data.reshape((d1, -1))

(Numpy从原始长度和定义的维度-1推断出值{而不是d1

答案 2 :(得分:3)

您可以迭代图像阵列并独立展平每一行。

numImages = x_data.shape[0]
flattened = np.array([x_data[i].flatten() for i in range(0,numImages)])

答案 3 :(得分:1)

您还可以使用以下命令: 例如,X是您的2D图片,尺寸为32x32,而-1则表示它是未知尺寸,我们希望numpy找出它。 numpy将通过查看“数组的长度和其余维”并确保满足上述条件(What does -1 mean in numpy reshape?)来解决这个问题。 T表示在使用axes关键字参数(https://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html)时反转张量的转置。

text/template

答案 4 :(得分:0)

假设您有一个数组image_array,则可以使用reshape()方法。

image_array = image_array.reshape(1000, 12288)