Python 生成带标签数据集的 CSV 文件

该博客介绍了如何使用Python脚本来生成CSV文件,特别适用于创建带标签的数据集。脚本从指定目录结构中读取文件,并按标签自动升序分配。目录结构包含多个子目录,每个子目录代表一个标签,子目录中的文件作为该标签的数据样本。生成的CSV文件包含了文件路径和对应的标签,方便后续的机器学习或计算机视觉任务使用。
摘要由CSDN通过智能技术生成
#!/usr/bin/python
# -*- coding: UTF-8 -*-

# Python 生成 CSV 文件
# Python 生成 CSV 文件,可用于生成带标签的数据集 CSV 文件,标签从0开始自动升序:0,1,2,3...
# 仓库:https://gist.github.com/huihut/9881c98a1d9279d4fa9dfd8475e3fe4b
# 参考:https://github.com/opencv/opencv_attic/blob/master/opencv/modules/contrib/doc/facerec/src/create_csv.py

'''

使用脚本:
* python create_csv.py <base_path> [save_path]
例如:
* python create_csv.py /Users/xx/code/dataset
* python create_csv.py /Users/xx/code/dataset ./dataset_csv.txt

目录结构(使用 tree 命令查看):
xx@xxs-MacBook-Pro:~/code/dataset$ tree
.
├── README
├── dataset_csv.txt
├── s01
│   ├── 01.pgm
│   ├── ...
│   └── 10.pgm
├── s02
│   ├── 01.pgm
│   ├── ...
│   └── 10.pgm
...
└── s10
    ├── 01.pgm
    ├── ...
    └── 10.pgm

生成的 CSV 文件内容(使用 cat 命令查看 dataset_csv.txt 文件内容):
xx@xxs-MacBook-Pro:~/code/dataset$ cat dataset_csv.txt
/Users/xx/code/dataset/s01/01.pgm;0
/Users/xx/code/dataset/s01/02.pgm;0
...
/Users/xx/code/dataset/s01/10.pgm;0
/Users/xx/code/dataset/s02/01.pgm;1
/Users/xx/code/dataset/s02/02.pgm;1
...
/Users/xx/code/dataset/s10/01.pgm;9
/Users/xx/code/dataset/s10/02.pgm;9
...
/Users/xx/code/dataset/s10/10.pgm;9

'''

import sys
import os.path

if __name__ == "__main__":

    SAVE_PATH = "./dataset_csv.txt"

    if (len(sys.argv) != 2 and len(sys.argv) != 3):
        #print "usage:"
        #print "* python create_csv.py <base_path> [save_path]"
        #print "example:"
        #print "* python create_csv.py /Users/xx/code/dataset"
        #print "* python create_csv.py /Users/xx/code/dataset ./dataset_csv.txt"
        sys.exit(1)
    elif (len(sys.argv) == 3):
        SAVE_PATH = sys.argv[2]

    BASE_PATH = sys.argv[1]
    SEPARATOR = ";"
    fh = open(SAVE_PATH,'w')

    label = 0
    for dirname, dirnames, filenames in os.walk(BASE_PATH):
        for subdirname in dirnames:
            subject_path = os.path.join(dirname, subdirname)
            for filename in os.listdir(subject_path):
                abs_path = "%s/%s" % (subject_path, filename)
                #print "%s%s%d" % (abs_path, SEPARATOR, label)
                fh.write(abs_path + SEPARATOR + str(label) + "\n")
            label = label + 1
    fh.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值