根据路径列表导入图像

时间:2017-02-09 07:29:17

标签: python opencv import keras

所以我试图导入一些图像。所有图像在.csv文件的第一列中都有各自的文件路径。以下是我到目前为止采用的方法。想法是制作路径列表然后使用opencv将图像“imread”到列表“cv_img”

目前的问题是只有1个图像被添加到列表cv_img中。知道为什么会这样吗?

这是最好的方法吗?

#Import Labels
import pandas as pd
df = pd.read_csv('File path.csv',usecols=[3])
labels=df

#Import features
#Problem area
cv_img = []
list1=pd.read_csv('File path.csv',usecols=[0])
for img in list1:
    n= cv2.imread(img)
    cv_img.append(n)

X_train=cv_img
y_train=labels
print(len(X_train)) #prints 1
print(len(y_train)) #prints 1136

2 个答案:

答案 0 :(得分:0)

我认为for循环中存在错误。我认为你的for循环只是读取列表中的第一个图像。

尝试将其修改为以下内容:

import cv2
for img in range(len(list1)):
    n= cv2.imread(list1[img])
    cv_img.append(n)

答案 1 :(得分:0)

所以我正在尝试一种不同的方法,但仍然存在一些问题。这里的目标是拥有以下维度的数组。 (长度,160,329,3)。如您所见,我的重塑功能已被注释掉。 " print(images.shape)行返回(8037,)。不知道如何继续获得正确的数组维度。作为参考,csv文件中的第1列是相关图像的路径列表。此方法还修复了我之前使用pandas时遇到的错误。

import csv
import matplotlib.pyplot as plt
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)