2016-06-10 177 views
4

我有一些(950)150x150x3 .jpg圖像文件,我想將其讀入Numpy數組。創建Numpy數組圖像

以下是我的代碼:

X_data = [] 
files = glob.glob ("*.jpg") 
for myFile in files: 
    image = cv2.imread (myFile) 
    X_data.append (image) 

print('X_data shape:', np.array(X_data).shape) 

輸出是(950, 150)。請讓我知道爲什麼該列表未正確轉換爲np.array以及是否有更好的方法來創建圖像陣列。

我讀過的東西,追加到numpy數組更容易通過python列表完成,然後將它們轉換爲數組。

編輯:一些更多的信息(如果有幫助),image.shape正確返回(150,150,3)

+1

你的目標是?一個4D 950x150x150x3陣列?或150x150x3或其他的「正確」數組列表? – DomTomCat

+0

@DomTomCat一個4D 950x150x150x3陣列。 –

+0

'X_data.append(np.array(image))'有幫助嗎? – SvbZ3r0

回答

5

我測試了你的代碼。它適用於我輸出

('X_data shape:', (4, 617, 1021, 3))

但是,所有圖像都是完全相同的尺寸。

當我添加不同程度的另一個圖像我有這樣的輸出:

('X_data shape:', (5,))

所以我建議你檢查的尺寸和相同數量的渠道(如真的所有圖像彩色圖像)?此外,你應該檢查是否所有的圖像(或沒有)有alpha通道(見@Gughan Ravikumar的評論)

如果只有通道數量不同(即一些圖像是灰色的),然後強制加載所有顏色格式:

image = cv2.imread (myFile, 1) 

編輯: 我使用的問題非常的代碼,只有我的目錄(和「*。PNG」)替換爲:

import cv2 
import glob 
import numpy as np 

X_data = [] 
files = glob.glob ("C:/Users/xxx/Desktop/asdf/*.PNG") 
for myFile in files: 
    print(myFile) 
    image = cv2.imread (myFile) 
    X_data.append (image) 

print('X_data shape:', np.array(X_data).shape) 
+0

你可以顯示你用scipy試過的代碼嗎? –

+0

所有圖像均爲3通道,尺寸爲150x150x3。有沒有其他的錯誤? –

+0

您可以使用相同的數據類型進行測試:'image = cv2.imread(myFile,1).astype(np。uint8)',但是我不太相信 – DomTomCat

0

您爲.JPG框架定義這將被放入一個相同大小的矩陣應sho u是x,y,R,G,B,A。不使用「A」,但它在每個像素的末尾佔用8位。