所以我试图导入一些图像。所有图像在.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
答案 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)