File size: 2,999 Bytes
accde48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
06b3cfb
 
 
 
 
 
 
 
 
cf6c274
 
 
 
 
 
 
06b3cfb
 
 
 
 
 
 
cf6c274
 
06b3cfb
 
 
89eaa03
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
77
78
79
80
81
82
import xml.etree.ElementTree as ET

def convert_bbox_to_int(xml_file, output_xml_file):
    # Parse the XML file
    tree = ET.parse(xml_file)
    root = tree.getroot()

    # Loop through all 'object' elements to find bboxes
    for obj in root.findall('object'):
        # Find the 'bndbox' element which contains the bbox info
        bndbox = obj.find('bndbox')
        if bndbox is not None:
            # Get the coordinates as float and convert them to int
            xmin = int(float(bndbox.find('xmin').text))
            ymin = int(float(bndbox.find('ymin').text))
            xmax = int(float(bndbox.find('xmax').text))
            ymax = int(float(bndbox.find('ymax').text))

            # Update the XML with the integer values
            bndbox.find('xmin').text = str(xmin)
            bndbox.find('ymin').text = str(ymin)
            bndbox.find('xmax').text = str(xmax)
            bndbox.find('ymax').text = str(ymax)

    # Save the modified XML to the output file
    tree.write(output_xml_file)
    print(f"Converted bounding boxes saved to {output_xml_file}")

# Example usage:
input_xml_file = 'path/to/your/input_annotation.xml'
output_xml_file = 'path/to/your/output_annotation.xml'

convert_bbox_to_int(input_xml_file, output_xml_file)

#######################################################################################################

import os
import xml.etree.ElementTree as ET

# Path to the folder containing XML annotation files
annotations_folder = '/path/to/annotations_folder'

# Path to save the modified XML annotation files
new_annotations_folder = '/path/to/new_annotations_folder'

# Create the new folder if it doesn't exist
if not os.path.exists(new_annotations_folder):
    os.makedirs(new_annotations_folder)

# Dictionary for renaming labels: {old_label: new_label}
label_mapping = {
    'old_label_1': 'new_label_1',
    'old_label_2': 'new_label_2',
    # Add more label mappings as needed
}

# Function to rename labels in the XML file and save to new location
def rename_labels_in_xml(xml_file, new_xml_file, label_mapping):
    tree = ET.parse(xml_file)
    root = tree.getroot()

    # Iterate over each object in the XML file
    for obj in root.findall('object'):
        label = obj.find('name').text
        # If label matches any in the label_mapping dictionary, rename it
        if label in label_mapping:
            print(f'Renaming label "{label}" to "{label_mapping[label]}" in {xml_file}')
            obj.find('name').text = label_mapping[label]

    # Write the updated XML to the new location
    tree.write(new_xml_file)

# Loop through all XML files in the annotations folder
for filename in os.listdir(annotations_folder):
    if filename.endswith('.xml'):
        xml_path = os.path.join(annotations_folder, filename)
        new_xml_path = os.path.join(new_annotations_folder, filename)  # New file path
        rename_labels_in_xml(xml_path, new_xml_path, label_mapping)

print('Label renaming and saving completed.')