Не могу конвертировать XML-файлы в CSV в Python

1

Чтобы использовать API обнаружения тензорного потока, мне нужно преобразовать файлы xml в метки csv. Я использовал этот код, взятый из модели обнаружения енота датитрана. Он имеет это на своем github, попробуйте. https://github.com/datitran/raccoon_dataset

Однако, когда я использую его код xml_to_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, изображения - это папка, в которой они содержатся, а данные - это папка, в которой я хочу сохранить файлы меток.

Теги:
csv
object-detection

1 ответ

1

Я использовал приведенную выше ссылку, чтобы загрузить репозиторий github и посмотрел на код. Во-первых, я скопировал вышеприведенный код и вставил его в новый файл и запустил его.

В вышеприведенном коде, причина для получения пустых файлов - это path который вы устанавливаете для метода, который вызывается, не существует в репо,

и если я предполагаю, что вы хотите использовать файлы xml доступные в папке annotations для создания новых файлов csv чтобы содержать данные тестирования и обучения отдельно, все, что вам нужно сделать, это создать два новых каталога, называемых test и train in Images и скопируйте xml файлы из annotations в эти новые каталоги, которые вы создали, а затем запустите приведенный выше код, затем он отлично работает

Я просто сделал то же самое и скопировал только несколько из xml файлов из каталога annotations и пока я нахожусь, напечатал dataframe, чтобы показать

 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.

Надеюсь это поможет

  • 0
    Я не использую весь репозиторий енотов, я делаю свою собственную модель для другого обнаружения, я просто хочу использовать файл для преобразования моих XML-файлов в CSV-файлы. Путь, который я установил, - это путь к изображениям в моем каталоге, все правильно. Также у меня есть папки с тестами и поездами в моем каталоге, но все равно спасибо за ответ :)
  • 0
    О, ты должен был прояснить это. В любом случае, если у вас есть xml файлы в ваших тестовых и обучающих каталогах, ваш код должен работать отлично
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню