“ IndexError:子索引超出范围”-将xml转换为csv

问题描述 投票:0回答:1

[作为Python的初学者,我正在尝试使用本教程说明(https://www.youtube.com/watch?v=kq2Gjv_pPe8&list=PLiIy2ThQvgewp67FDKV2H1h-154bJK9RS&index=2&t=477s)将XML文件转换为CSV。最后,我需要tfrecord格式的图像和注释才能在我的自定义EfficientDet模型中使用它们。我遵循了这两个帖子的解决方案(IndexError: child index out of rangewhy do I keep getting child out of range error?),并尝试了这句话中的一堆不同的节点编号(1-9) ““ int(成员[3] [0] .text)”,但不断收到“ IndexError:子索引超出范围”错误!

我正在尝试转换以下格式的XML文件:

<annotation>
<folder>images</folder>
<filename>Czech_000010.jpg</filename>
<size>
<depth>3</depth>
<width>600</width>
<height>600</height>
</size>
<object>
<name>D40</name>
<bndbox>
<xmin>213</xmin>
<ymin>409</ymin>
<xmax>274</xmax>
<ymax>441</ymax>
</bndbox>
</object>
<object>
<name>D10</name>
<bndbox>
<xmin>228</xmin>
<ymin>473</ymin>
<xmax>327</xmax>
<ymax>495</ymax>
</bndbox>
</object>
</annotation>

使用以下脚本到CSV:

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


def xml_to_csv(path):
    xml_list = []
    for xml_file in glob.glob(path + '/*.xml'):
        tree = ET.parse(xml_file)
        root = tree.getroot()
        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)
    column_name = ['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax']
    xml_df = pd.DataFrame(xml_list, columns=column_name)
    return xml_df


def main():
    for directory in ['train','test']:
        image_path = os.path.join(os.getcwd(), 'images/{}'.format(directory))
        xml_df = xml_to_csv(image_path)
        xml_df.to_csv('data/{}_labels.csv'.format(directory), index=None)
        print('Successfully converted xml to csv.')


main()
python xml csv tensorflow elementtree
1个回答
0
投票

请尝试:

© www.soinside.com 2019 - 2024. All rights reserved.