2016-06-10 129 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位。