-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
76 lines (71 loc) · 2.81 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import os
from os import walk
import csv
import xml.etree.ElementTree as ET
IMAGES_PATH = 'C:/Users/bitlg/PycharmProjects/object_detection/venv/main/images/'
TRAIN_IMAGES_PATH = 'C:/Users/bitlg/PycharmProjects/object_detection/venv/main/images/train'
TEST_IMAGES_PATH = 'C:/Users/bitlg/PycharmProjects/object_detection/venv/main/images/test'
train_images = {}
for (dirpath, dirnames, filenames) in walk(TRAIN_IMAGES_PATH):
for filename in filenames:
train_images[filename] = filename
break
test_images = {}
for (dirpath, dirnames, filenames) in walk(TEST_IMAGES_PATH):
for filename in filenames:
test_images[filename] = filename
break
with open('images.csv') as images:
for row in csv.reader(images):
image_name = row[0]
xmin = row[1]
ymin = row[2]
width = row[3]
height = row[4]
xmax = int(xmin) + int(width)
ymax = int(ymin) + int(height)
if image_name in test_images:
folder_name = 'test'
else:
folder_name = 'train'
# create the file structure
annotation = ET.Element('annotation')
folder = ET.SubElement(annotation, 'folder')
folder.text = folder_name
filename = ET.SubElement(annotation, 'filename')
filename.text = image_name
path = ET.SubElement(annotation, 'path')
path.text = IMAGES_PATH + folder_name + "/" + image_name
source = ET.SubElement(annotation, 'source')
database = ET.SubElement(source, 'database')
database.text = 'Unknown'
size = ET.SubElement(annotation, 'size')
width = ET.SubElement(size, 'width')
width.text = '1280'
height = ET.SubElement(size, 'height')
height.text = '720'
depth = ET.SubElement(size, 'depth')
depth.text = '3'
segmented = ET.SubElement(annotation, 'segmented')
segmented.text = '0'
object = ET.SubElement(annotation, 'object')
name = ET.SubElement(object, 'name')
name.text = 'main road'
pose = ET.SubElement(object, 'pose')
pose.text = 'Unspecified'
truncated = ET.SubElement(object, 'truncated')
truncated.text = '0'
difficult = ET.SubElement(object, 'difficult')
difficult.text = '0'
bndbox = ET.SubElement(object, 'bndbox')
xminElem = ET.SubElement(bndbox, 'xmin')
xminElem.text = str(xmin)
ymimElem = ET.SubElement(bndbox, 'ymin')
ymimElem.text = str(ymin)
xmaxElem = ET.SubElement(bndbox, 'xmax')
xmaxElem.text = str(xmax)
ymaxElem = ET.SubElement(bndbox, 'ymax')
ymaxElem.text = str(ymax)
xmlData = ET.tostring(annotation, encoding='unicode')
myfile = open(IMAGES_PATH + folder_name + '/' + image_name.rsplit('.jpg')[0] + '.xml', 'w')
myfile.write(xmlData)