Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Mayer
CircularGreenSimCity
Commits
d0af6ca2
Commit
d0af6ca2
authored
Sep 20, 2024
by
Mayer
Browse files
Add new file
parent
14d07071
Changes
1
Hide whitespace changes
Inline
Side-by-side
python_scripts/DLM_Tree_Classification/Additional_operations_script
0 → 100644
View file @
d0af6ca2
# Dieses Script enthält verschiedene nützliche Verarbeitungsoptionen für den Prozess der Trainingsdatensatzerstellung
# Finden und entfernen ungelabelter Bilder aus den gelabelten Fotos um Auswahl zu beschleunigen
import os
import shutil
# Ordner Pfade
ordner_a = '_MOMMERT/konstanz_labeled' # Ordner mit den .png und .txt Dateien
ordner_b = '_MOMMERT/sorted_images_with_konstanz/unlabeled' # Zielordner für die .png Dateien ohne zugehörige .txt Datei
# Stelle sicher, dass der Zielordner 'b' existiert, andernfalls erstelle ihn
if not os.path.exists(ordner_b):
os.makedirs(ordner_b)
# Liste alle .txt Dateien in 'a'
txt_dateien = set([os.path.splitext(f)[0] for f in os.listdir(ordner_a) if f.endswith('.txt')])
# Liste alle .png Dateien in 'a'
png_dateien = [f for f in os.listdir(ordner_a) if f.endswith('_bbox.png')]
# Überprüfen, ob zu jeder .png Datei eine passende .txt Datei existiert
for png_datei in png_dateien:
# Entferne die Endung '_bbox.png', um den Basisnamen zu erhalten
basisname = os.path.splitext(png_datei)[0].replace('_bbox', '')
# Wenn keine entsprechende .txt Datei vorhanden ist, verschiebe die .png Datei nach 'b'
if basisname not in txt_dateien:
quelle = os.path.join(ordner_a, png_datei)
ziel = os.path.join(ordner_b, png_datei)
shutil.move(quelle, ziel)
print(f"Verschiebe {png_datei} nach {ordner_b}")
# Finden und verschieben von .txt Dateien, zu welchen keine .png Datei existiert.
import os
import shutil
# Ordner Pfade
ordner_a = '_MOMMERT/sorted_images' # Ordner mit den .png und .txt Dateien
ordner_b = 'unwanted' # Zielordner für die .txt Dateien ohne zugehörige .png Datei
# Stelle sicher, dass der Zielordner 'b' existiert, andernfalls erstelle ihn
if not os.path.exists(ordner_b):
os.makedirs(ordner_b)
# Liste alle .png Dateien in 'a'
png_dateien = set([os.path.splitext(f)[0].replace('_bbox', '') for f in os.listdir(ordner_a) if f.endswith('_bbox.png')])
# Liste alle .txt Dateien in 'a'
txt_dateien = [f for f in os.listdir(ordner_a) if f.endswith('.txt')]
# Überprüfen, ob zu jeder .txt Datei eine passende .png Datei existiert
for txt_datei in txt_dateien:
# Entferne die Endung '.txt', um den Basisnamen zu erhalten
basisname = os.path.splitext(txt_datei)[0]
# Wenn keine entsprechende .png Datei vorhanden ist, verschiebe die .txt Datei nach 'b'
if basisname not in png_dateien:
quelle = os.path.join(ordner_a, txt_datei)
ziel = os.path.join(ordner_b, txt_datei)
shutil.move(quelle, ziel)
print(f"Verschiebe {txt_datei} nach {ordner_b}")
# Überschreiben von Bildern mit Skala mit Bildern ohne Skala (gelabelt)
import os
import shutil
# Pfade zu den Verzeichnissen
folder_a = "_MOMMERT/sorted_images/false" # Pfad wo Bilder überschrieben werden sollen
folder_b = "_MOMMERT/wuerzburg_labeled" # Pfad zu Ordner wo Bilder hergenommen werden sollen
# Liste alle .png Dateien in Ordner 'a'
for filename in os.listdir(folder_a):
if filename.endswith('.png'):
# Pfad zur Datei in Ordner 'b'
file_b_path = os.path.join(folder_b, filename)
# Prüfe, ob die Datei in Ordner 'b' existiert
if os.path.exists(file_b_path):
# Pfad zur Originaldatei in Ordner 'a'
original_file_path = os.path.join(folder_a, filename)
# Kopiere die Datei aus Ordner 'b' nach Ordner 'a' und überschreibe die ursprüngliche Datei
shutil.copy(file_b_path, original_file_path)
print(f"Datei {filename} wurde von '{folder_b}' nach '{folder_a}' kopiert und überschrieben.")
else:
print(f"Datei {filename} existiert nicht in '{folder_b}'.")
# Vereinheitlichung aller .txt und .png files
import os
# Pfad zum Ordner 'a'
folder_a = 'sorted_images/good'
# Funktion zum Umbenennen von Dateien
def rename_files_in_folder():
for filename in os.listdir(folder_a):
# Pfad zur Datei
file_path = os.path.join(folder_a, filename)
# Überprüfen, ob es eine .txt-Datei ist und die Endung '_DOP20_BW.txt' hat
if filename.endswith('_DOP20_BW.txt'):
new_filename = filename.replace('_DOP20_BW.txt', '_rgbi_20cm.txt')
new_file_path = os.path.join(folder_a, new_filename)
os.rename(file_path, new_file_path)
print(f"Umbenannt: {file_path} -> {new_file_path}")
# Überprüfen, ob es eine .png-Datei ist und die Endung '_DOP20_BW.png' hat
elif filename.endswith('_DOP20_BW_bbox.png'):
new_filename = filename.replace('_DOP20_BW_bbox.png', '_rgbi_20cm_bbox.png')
new_file_path = os.path.join(folder_a, new_filename)
os.rename(file_path, new_file_path)
print(f"Umbenannt: {file_path} -> {new_file_path}")
# Umbenennung starten
rename_files_in_folder()
# Reduzierung des Datensatzes um alle bilder, welche die Klassen 2-6 beinhalten:
import os
import shutil
# Originalverzeichnis
source_dir = 'sorted_images'
# Verzeichnis, das durchsucht werden soll
good_dir = os.path.join(source_dir, 'good')
# Neues Verzeichnis für unerwünschte Dateien
unwanted_dir = 'unwanted'
os.makedirs(unwanted_dir, exist_ok=True)
# Kopie des 'sorted_images'-Ordners erstellen
backup_dir = 'sorted_images_backup'
if not os.path.exists(backup_dir):
shutil.copytree(source_dir, backup_dir)
print(f"Kopie des Verzeichnisses erstellt: {backup_dir}")
else:
print(f"Backup-Verzeichnis existiert bereits: {backup_dir}")
# Klassen, die als unerwünscht gelten
unwanted_classes = {2, 3, 4, 5, 6}
# Funktion zum Verschieben der Dateien
def move_files(txt_file, png_file, unwanted_dir):
# Verschiebe die .txt Datei
shutil.move(txt_file, os.path.join(unwanted_dir, os.path.basename(txt_file)))
# Verschiebe die zugehörige .png Datei
if os.path.exists(png_file):
shutil.move(png_file, os.path.join(unwanted_dir, os.path.basename(png_file)))
else:
print(f"Keine entsprechende .png Datei gefunden für: {png_file}")
# Durchlaufe das Verzeichnis 'good'
for filename in os.listdir(good_dir):
if filename.endswith('.txt'):
txt_file_path = os.path.join(good_dir, filename)
png_file_path = txt_file_path.replace('.txt', '_bbox.png')
# Überprüfe die .txt Datei
with open(txt_file_path, 'r') as file:
lines = file.readlines()
for line in lines:
class_id = int(line.split()[0]) # Die erste Zahl in jeder Zeile ist die Klassen-ID
if class_id in unwanted_classes:
move_files(txt_file_path, png_file_path, unwanted_dir)
break # Breche die Schleife ab, wenn eine unerwünschte Klasse gefunden wurde
print("Verschieben unerwünschter Dateien abgeschlossen.")
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