簡體   English   中英

Numpy 展平 RGB 圖像陣列

[英]Numpy flatten RGB image array

我有 1,000 張 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)

我怎樣才能做到這一點?

在將flatten()應用於扁平化數組后應用 numpy 方法reshape()

  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

試試這個:

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 從原始長度和定義的維度d1推斷值而不是-1

您可以遍歷圖像數組並獨立展平每一行。

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

你也可以使用這個:X 是你的 2D 圖片,例如大小為 32x32 和 -1 它只是意味着它是一個未知的維度,我們希望 numpy 找出它。 numpy 將通過查看“數組的長度和剩余維度”並確保它滿足上述標准( numpy reshape 中 -1 是什么意思? )來計算這一點。 T 表示在使用軸關鍵字參數 ( https://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html ) 時反轉張量的轉置。

X_flatten = X.reshape(X.shape[0], -1).T

假設你有一個數組image_array你可以使用reshape()方法。

image_array = image_array.reshape(1000, 12288)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM