Can';t在python中将xml文件转换为csv

Can';t在python中将xml文件转换为csv,python,xml,csv,object-detection,Python,Xml,Csv,Object Detection,为了使用tensorflow检测API,我需要将xml文件转换为csv标签。我使用的代码取自datitran的浣熊检测模型。他把它放在他的github上,试试看 但是,当我使用他的xml到csv代码时,我可以编译它,但是新标签文件是空的。这是密码 import os import glob import pandas as pd import xml.etree.ElementTree as ET def xml_to_csv(path): xml_list = [] for xml_fil

为了使用tensorflow检测API,我需要将xml文件转换为csv标签。我使用的代码取自datitran的浣熊检测模型。他把它放在他的github上,试试看

但是,当我使用他的xml到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()

其中“train”和“test”是包含xml文件的文件夹,图像是包含它们的文件夹,数据是我希望保存标签文件的文件夹。

我使用上面给出的链接下载了github repo并查看了代码。 首先,我复制了上面的代码并粘贴到一个新文件中并运行它

在上面发布的代码中,您获取空文件的原因是您为要调用的方法设置的路径在repo中不存在

如果我假设您想使用
annotations
文件夹中可用的
xml
文件来创建新的
csv
文件,以分别包含测试和训练数据,您所要做的就是在
Images
目录中创建两个名为
test
train
的新目录,并将
xml
文件从
annotations
复制到您创建的这些新目录中,然后运行上述代码,它就可以完美地工作了

我也这么做了,只从
注释
目录复制了一些
xml
文件 当我在做的时候,打印数据框来显示

 F:\expts\raccoon_dataset-master\raccoon_dataset-master>python import.py
          filename  width  height    class  xmin  ymin  xmax  ymax
0    raccoon-1.png    650     417  raccoon    81    88   522   408
1   raccoon-10.png    450     495  raccoon   130     2   446   488
2   raccoon-11.png    660     432  raccoon     3     1   461   431
3   raccoon-12.png    259     194  raccoon    28    21   126   181
4   raccoon-12.png    259     194  raccoon    85    33   235   193
5   raccoon-13.png    660     495  raccoon    55    28   393   313
6   raccoon-14.png    900     484  raccoon   163    81   546   438
7   raccoon-15.png    640     360  raccoon   313    61   614   360
8    raccoon-2.png    800     573  raccoon    60    51   462   499
9    raccoon-3.png    720     480  raccoon     1     1   720   476
10   raccoon-4.png    275     183  raccoon    21    11   200   183
11   raccoon-5.png    270     187  raccoon     3     3   260   179
12   raccoon-6.png    480     360  raccoon     1    44   307   316
13   raccoon-7.png    410     308  raccoon    92    79   271   264
14   raccoon-8.png    259     194  raccoon    16    11   236   175
15   raccoon-9.png    347     510  raccoon    10     7   347   471
Successfully converted xml to csv.
         filename  width  height    class  xmin  ymin  xmax  ymax
0  raccoon-16.png    424     640  raccoon    51   178   355   632
1  raccoon-17.png    259     194  raccoon    95    60   167   118
2  raccoon-18.png    240     156  raccoon    32    25   201   130
3  raccoon-19.png    259     194  raccoon    87     8   182    89
4  raccoon-20.png    720     540  raccoon     2    29   720   503
5  raccoon-21.png    290     174  raccoon    59     2   216   171
6  raccoon-22.png    640     360  raccoon   252    76   466   335
7  raccoon-23.png    259     194  raccoon   108     1   258   194
8  raccoon-24.png    268     188  raccoon    77    48   179   156
9  raccoon-24.png    268     188  raccoon   139    77   202   145
Successfully converted xml to csv.

希望这有帮助

我没有使用整个浣熊回购,我正在为不同的检测制作自己的模型,我只想使用一个文件将xml文件转换为csv文件。我设置的路径是我目录中图像的路径,一切都是正确的。另外,我的目录中有test和train文件夹,但仍然感谢您的回复:)哦,您应该说得更清楚。无论如何,如果您在测试和训练目录中有
xml
文件,那么您的代码应该运行得很好我确实有它们,但它没有。。。要是我能给你发张照片来证明这一点就好了哈哈哈这对我来说很有效!我使用的是原始代码。没用。但在做了一些更正(如上@Martin所述)之后,我能够转换。