导入图像以准备keras

时间:2017-02-13 05:52:10

标签: image python-3.x csv keras

我正在尝试导入一堆图像并让它们为keras做好准备。这里的目标是拥有以下维度的数组。 (长度,160,329,3)。如您所见,我的重塑功能已被注释掉。 " print(images.shape)行返回(8037,)。不知道如何继续获得正确的数组维度。作为参考,csv文件中的第1列是相关图像的路径列表。我有一个功能,它结合了文件夹内的图像路径和文件夹的路径。

当我运行注释掉的重塑功能时,我收到以下错误。 " ValueError:无法将大小为8037的数组重塑为形状(8037,160,320,3)"

import csv
import cv2

f = open('/Users/username/Desktop/data/driving_log.csv')
csv_f = csv.reader(f)

m=[]
for row in csv_f:
  n=(row)
  m.append(n)

images=[]
for i in range(len(m)):
    img=(m[i][1])
    img=img.lstrip()
    path='/Users/username/Desktop/data/'
    img=path+img
    image=cv2.imread(img)
    images.append(image)
item_num = len(images)
images=np.array(images)
#images=np.array(images).reshape(item_num, 160, 320, 3)
print(images.shape) #returns (8037,)

2 个答案:

答案 0 :(得分:0)

在将image附加到images之前,是否可以打印imshow的形状以验证它是否符合预期?更好的是在循环中添加cv2.imread以确保您正在加载您期望的图像(仅需要为一个或两个执行)。如果您提供的文件路径中没有图片,则None不会引发错误,因此您的数组可能全部为img,这会产生您所描述的确切行为

如果问题是这样,请检查public interface iCommunicateListener{ void communicate(String msg); } 变量并确保它准确指向您想要的位置。

答案 1 :(得分:0)

原来它包含了CSV文件的第一行标题。在我整理出来之后它运行得很好。它给了我所要求的形状。

images=[]
for i in range(1,len(labels)):
    img=(m[i][1])
    img=img.lstrip()
    path='/Users/user/Desktop/data/'
    img=path+img

    image=cv2.imread(img)
    images.append(image)