labelImg标注好的xml文件及文件内容格式如下:
在这里插入图片描述
在这里插入图片描述
批量转换
创建xml2csv.py文件,文件内容如下:

# -*- coding:utf-8 -*-

import os
import glob
import pandas as pd
import xml.etree.ElementTree as ET
import random

def xml_to_csv(path):
    xml_list = []
    xml_list_test = []
    # 设置训练集所占比例
    rate = 0.8
    i = 0
    img_file = glob.glob(path + '/*.xml')
    random.shuffle(img_file)
    for xml_file in img_file:
        i = i + 1
        num_of_train = int(len(glob.glob(path + '/*.xml')) * rate)
        tree = ET.parse(xml_file)
        root = tree.getroot()
        if i <= num_of_train:
            for member in root.findall('object'):
                value = (root.find('filename').text,
                         int(root.find('size')[0].text),
                         int(root.find('size')[1].text),
                         member[0].text,
                         int(member[4][0].text),
                         int(member[4][1].text),
                         int(member[4][2].text),
                         int(member[4][3].text)
                         )
                xml_list.append(value)
            # print(xml_list)
        else:
            for member in root.findall('object'):
                value = (root.find('filename').text,
                         int(root.find('size')[0].text),
                         int(root.find('size')[1].text),
                         member[0].text,
                         int(member[4][0].text),
                         int(member[4][1].text),
                         int(member[4][2].text),
                         int(member[4][3].text)
                         )
                xml_list_test.append(value)
            # print(xml_list_test)
    column_name = ['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax']
    xml_df = pd.DataFrame(xml_list, columns=column_name)
    xml_df_test = pd.DataFrame(xml_list_test, columns=column_name)
    return xml_df, xml_df_test

def main():
    # xml文件的存储地址,根据自己xml存储路径进行调整
    image_path = os.path.join('E:/回字四点数据/test', 'jpg')
    # csv文件保存位置,自行调整
    # 训练集
    csv_save_path = 'E:/test/data/train_labels.csv'
    # 测试集
    csv_save_path_test = 'E:/test/data/test_labels.csv'

    xml_df, xml_df_test = xml_to_csv(image_path)
    xml_df.to_csv(csv_save_path, index=None)
    xml_df_test.to_csv(csv_save_path_test, index=None)
    print('Successfully converted xml to csv.')
main()

转换成的csv文件内容如下:
在这里插入图片描述
注意: 由于我用的labelImg版本标注好的xml文件filename属性图片名无后缀.jpg,可以看到转换成的csv文件中第一列filename都是无后缀.jpg的。

python修改csv文件某一列统一加后缀
创建modify_csv.py文件,内容如下:

# -*- coding:utf-8 -*-

import numpy as np
import pandas as pd

train_filename = pd.read_csv("train_labels.csv")    # csv文件
# 对csv文件中的filename一列的数据加上后缀.jpg
train_filename['filename'] = train_filename['filename'].apply(lambda x:str(int(x))+'.jpg')
train_filename.to_csv("train_labels_new.csv", index=None)

test_filename = pd.read_csv("test_labels.csv")
test_filename['filename'] = test_filename['filename'].apply(lambda x:str(int(x))+'.jpg')
test_filename.to_csv("test_labels_new.csv", index=None)

对filename一列统一加后缀后的csv文件如下:
在这里插入图片描述

GitHub 加速计划 / la / labelImg
22.31 K
6.24 K
下载
🎉 超级实用!LabelImg,图像标注神器,现在加入Label Studio社区,享受多模态数据标注新体验!🚀 简单易用,支持XML、YOLO和CreateML格式,适用于ImageNet等项目。不再单独维护,立即尝试Label Studio,安装一键到位,更灵活,功能更强大!👇 安装即刻开始:pip3 install labelImg,或访问<https://github.com/heartexlabs/label-studio> 获取源码构建。一起探索数据标注的新边界!👨‍💻👩‍💻【此简介由AI生成】
最近提交(Master分支:2 个月前 )
b33f965b Adds information about Label Studio community to welcome LabelImg users 2 年前
2d5537ba 2 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐