Я описал свой учебный проект здесь: Разделение данных валидации поездов - метки доступны, но классов нет
И попытался прочитать данные с предложенным кодом из ответа sid_508.
import os
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
xs, y = [], []
main_dir = r'C:\Users\tobis\OneDrive\Desktop\Masterarbeit\data\2017-IWT4S-CarsReId_LP-dataset' # main directory
label_data = pd.read_csv(r'C:\Users\tobis\OneDrive\Desktop\Masterarbeit\data\2017-IWT4S-CarsReId_LP-dataset\trainVal.csv')
for folder in os.listdir(main_dir):
for img in os.listdir(os.path.join(main_dir, folder)):
arr = plt.imread(os.path.join(main_dir, folder) + img)
xs.append(arr)
y.append(label_data[label_data['image_path'] == os.path.join(folder, img)]['lp'])
#^ this part can be changed depending on the exact format of your label data file.
# then you can convert them into numpy arrays and reshape them as you need.
xs = np.array(xs)
y = np.array(y)
Я получил следующий код ошибки:
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-12-ee9624548ea7> in <module>
10 for folder in os.listdir(main_dir):
11 for img in os.listdir(os.path.join(main_dir, folder)):
---> 12 arr = plt.imread(os.path.join(main_dir, folder) + img)
13 xs.append(arr)
14 y.append(label_data[label_data['image_path'] == os.path.join(folder, img)]['lp'])
~\.conda\envs\python36\lib\site-packages\matplotlib\pyplot.py in imread(fname, format)
2133 @docstring.copy(matplotlib.image.imread)
2134 def imread(fname, format=None):
-> 2135 return matplotlib.image.imread(fname, format)
2136
2137
~\.conda\envs\python36\lib\site-packages\matplotlib\image.py in imread(fname, format)
1431 return handler(fd)
1432 else:
-> 1433 with open(fname, 'rb') as fd:
1434 return handler(fd)
1435 else:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\tobis\\OneDrive\\Desktop\\Masterarbeit\\data\\2017-IWT4S-CarsReId_LP-dataset\\s01_l011000_1.png'
Я понимаю это, потому что нет пути или файла с именем
'C:\\Users\\tobis\\OneDrive\\Desktop\\Masterarbeit\\data\\2017-IWT4S-CarsReId_LP-dataset\\s01_l011000_1.png'
Вместо правильного пути к первому изображению было бы:
'C:\\Users\\tobis\\OneDrive\\Desktop\\Masterarbeit\\data\\2017-IWT4S-CarsReId_LP-dataset\\s01_l01\\1_1.png'
Мне кажется, что Python не распознает эту последнюю папку, в которой хранятся изображения (из-за этого отсутствуют baskslashes). Кроме того, три ноля добавляются к фактическому имени файла. Я не знаю, почему это происходит, но в первую секунду или в первые несколько минут после открытия папки изображений имя изображения равно 1000_1, но вскоре после этого эти три нуля исчезают, а имя изображения снова становится 1_1.
Спасибо!