我正在尝试导入一堆图像并让它们为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,)
答案 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)