从本地数据集中创建labels.csv文件夹

2024-06-16 10:19:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我的驱动器上有一个数据集,它被划分为每个类的文件夹。我想创建一个.csv文件,其中包含每个图像的名称及其相应的父文件(即标签)

这就是我目前所拥有的

import cv2
import os
import glob
import pandas as pd

name_list = []
label_list = []

img_dir = './content/My Drive/Colab Notebooks/DRS/' #Directory of all images 
file_path = os.path.join(img_dir,'no DR', 'Mild NPDR', 'Moderate NPDR', 'Severe NPDR', 'PDR')
files = glob.glob(data_path)
data = []

for file in files:
  label_list.append(img_dir)
  name_list.append(file)
   
    
df1 = pd.DataFrame(name_list,columns=['image'])
df2 = pd.DataFrame(label_list,columns=['label'])

result = pd.concat([df1, df2], axis=1)
result
result.to_csv('./content/My Drive/Colab Notebooks/DRS/labels.csv', index = False)

我遇到的问题是,我不需要图像的整个路径名,只需要imagename.jpg,无论我做什么,标签都显示为“./content/My Drive/Colab Notebooks/DRS/”

这是我的第一个深度学习项目,所以我对这些技术不是很熟悉


Tags: csvnameimportimgmydirdrivecontent
2条回答

你可以用 filename_sting.split('/')创建文件名除以“/”的向量。
例如: "/home/usr/test.txt".split() = ['','home','usr','test.txt'] 然后,您可以选择要使用的零件并再次将它们添加到一起

编辑:

我想我误解了。您需要文件名,但只将上面指定的路径附加到label_list。 您可能想使用name_list' instead of the 'label_list

我将用os.listdir()列出目录,并用pandas创建CSV:

import os
import pandas as pd

os.chdir(r'cats_and_dogs_dataset')

folders = ['dogs', 'cats']

files = []

for folder in folders:
    for file in os.listdir(folder):
        files.append([file, folder])

pd.DataFrame(files, columns=['files', 'target']).to_csv('files_and_targets.csv')

CSV将如下所示:

              file target
0     dog.4001.jpg   dogs
1     dog.4002.jpg   dogs
2     dog.4003.jpg   dogs
3     dog.4004.jpg   dogs
4     dog.4005.jpg   dogs

相关问题 更多 >