当我使用numpy.array()处理“列表”时如何处理?

时间:2018-07-27 03:04:31

标签: python numpy numpy-ndarray

import cv2
import numpy

list_pixel=[]
list_label=[]
for i in range(0,10):
    for j in range(0,10):
        list_pixel.append(cv2.imread("C:\\Users\\kimcho\\Desktop\\testdata\\testdata_"+str(i)+"_0"+str(j)+".png",0))
        list_label.append(i)
    j=0
list_pixel.pop(0)
list_label.pop(0)
list_pixel=numpy.array(list_pixel)
print(list_pixel)
print(list_pixel.shape)
print(list_pixel[0].shape)

当我使用numpy.array()处理'list'时如何处理?我想通过模仿keras来制作数据集。但是,我制作的数据集让我不满意。我希望它像keras一样工作,以返回如下所示的值:

它可以返回值(60000,28,28)

但是对于我的数据集,它只能像这样返回:

仅返回值(99,)-我得到了99张图片,我想将其像素加载到list_pixel

这是我的代码:

希望任何人都可以帮助我解决这个问题。非常感谢!!!

1 个答案:

答案 0 :(得分:0)

When using cv2.imread中设置图像样式,您已经将图像加载为numpy数组。

一种简单的方法如下:

cstid = models.ForeignKey(customer, on_delete=models.CASCADE, blank=True, null=True)

让我们在一个简单的场景上尝试一下:我们假设只有一张图像 28x28 ,例如:

Random 28x28 image

假设它在路径import cv2 import numpy as np list_label = np.arange(0, 10) path = "C:\\Users\\kimcho\\Desktop\\testdata\\testdata_{0}_0{1}.png" list_pixel = np.array([ cv2.imread(path.format(i, j), 0) for i in range(0, 10) for j in range(0, 10) ]) 中。

my/path/image.png

运行import cv2 import numpy as np list_label = np.arange(0, 10) path = "my/path/image.png" list_pixel = np.array([ cv2.imread(path,0) for i in range(0, 10) for j in range(0, 10) ]) 会得到list_pixel.shape