Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Mayer
CircularGreenSimCity
Commits
4fdc21c6
Commit
4fdc21c6
authored
10 months ago
by
Mayer
Browse files
Options
Download
Email Patches
Plain Diff
Add new file
parent
b07b270c
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
python_scripts/DLM_Tree_Classification/YOLO_Formatting_Script
+109
-0
...on_scripts/DLM_Tree_Classification/YOLO_Formatting_Script
with
109 additions
and
0 deletions
+109
-0
python_scripts/DLM_Tree_Classification/YOLO_Formatting_Script
0 → 100644
+
109
-
0
View file @
4fdc21c6
# Austausch von gelabeldet rgb´s zu ungelabelden rgb´s
import os
import shutil
# Pfade zu den Verzeichnissen
folder_a = "_MOMMERT/sorted_images/good"
new_folder = "_MOMMERT/sorted_images_YOLO_formatted"
# Kopiere folder_a in das aktuelle Verzeichnis und benenne es um
shutil.copytree(folder_a, new_folder)
# Pfade zu den zusätzlichen RGB-Bildverzeichnissen
rgb_folders = [
"_MOMMERT/wuerzburg_aerial_images_rgb",
"_MOMMERT/memmingen_aerial_images_rgb",
"_MOMMERT/konstanz_aerial_images_rgb"
]
# Durchsuche den neuen Ordner nach Bilddateien mit der Endung '_bbox.png'
for filename in os.listdir(new_folder):
if filename.endswith('_bbox.png'):
# Ersetze '_bbox.png' durch '.png' im Dateinamen
new_filename = filename.replace('_bbox.png', '.png')
# Suche in allen RGB-Verzeichnissen nach der entsprechenden Datei
file_found = False
for rgb_folder in rgb_folders:
file_b_path = os.path.join(rgb_folder, new_filename)
# Prüfe, ob die Datei in einem der RGB-Ordner vorhanden ist
if os.path.exists(file_b_path):
# Pfad zur Originaldatei im neuen Ordner
original_file_path = os.path.join(new_folder, filename)
# Kopiere die Datei aus dem RGB-Ordner in den neuen Ordner
shutil.copy(file_b_path, original_file_path)
# Neuer Pfadname im neuen Ordner
new_file_path = os.path.join(new_folder, new_filename)
# Umbenennen der Datei im neuen Ordner
os.rename(original_file_path, new_file_path)
print(f"Kopiert und umbenannt: {file_b_path} -> {new_file_path}")
file_found = True
break # Beende die Suche, wenn die Datei gefunden wurde
if not file_found:
print(f"Keine passende Datei gefunden für: {new_filename}")
print("Vorgang abgeschlossen.")
# .txt Generator - für die korrekte Konvertierung ins YOLO Format
# Pfad zu Verzeichnis
dir = "_MOMMERT/sorted_images_YOLO_formatted"
# Funktion, um sicherzustellen, dass für jedes Bild eine .txt-Datei vorhanden ist
def create_empty_label_files(directory):
image_files = [f for f in os.listdir(directory) if f.endswith(('.jpg', '.jpeg', '.png'))]
for image_file in image_files:
txt_file = os.path.splitext(image_file)[0] + ".txt"
txt_path = os.path.join(directory, txt_file)
if not os.path.exists(txt_path):
# Erstelle eine leere .txt Datei
open(txt_path, 'w').close()
create_empty_label_files(dir)
# Sicherstellen, dass alle Bounding-Boxen maximale Werte von 1 und minimale Werte von 0 besitzen
# Pfad zu Ordner 'a', der die .txt-Dateien enthält
folder = "_MOMMERT/sorted_images_YOLO_formatted"
def check_and_correct_labels(label_dir):
# Durchsuche alle .txt-Dateien im Ordner
for label_file in os.listdir(label_dir):
if label_file.endswith('.txt'):
file_path = os.path.join(label_dir, label_file)
corrected_lines = []
with open(file_path, 'r') as f:
lines = f.readlines()
for line in lines:
# Zerlege die Zeile in einzelne Werte
values = line.strip().split()
# Erste Zahl ist die Klassen-ID, die bleibt unverändert
class_id = values[0]
# Konvertiere die restlichen Werte in Fließkommazahlen und prüfe sie
coords = [float(v) for v in values[1:]]
# Korrigiere die Werte, die außerhalb des Bereichs liegen
coords = [min(1.0, max(0.0, v)) for v in coords]
# Erstelle die korrigierte Zeile
corrected_line = f"{class_id} " + " ".join(map(str, coords)) + "\n"
corrected_lines.append(corrected_line)
# Speichere die korrigierten Koordinaten zurück in die .txt-Datei
with open(file_path, 'w') as f:
f.writelines(corrected_lines)
# Beispiel-Aufruf
label_directory = folder
check_and_correct_labels(label_directory)
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets