from ultralytics import YOLO import random # Lädt das Modell (Nano-Version ist schnell & reicht für Tassen/Teller) model = YOLO("models/yolo11n.pt") # Deutsch-Übersetzung für gängige Objekte label_map = { "cup": "eine Tasse", "bottle": "eine Flasche", "cell phone": "ein Handy", "person": "einen Menschen (vermutlich Matthias, der schon wieder nichts tut)", "laptop": "einen Laptop", "chair": "einen Stuhl", "remote": "eine Fernbedienung", "keyboard": "eine Tastatur", "mouse": "eine Maus", "bicycle": "ein Fahrrad" } def analyze_image_with_yolo(image_path): results = model.predict(source=image_path, conf=0.45) found_items = [] for result in results: for box in result.boxes: label = result.names[int(box.cls)] found_items.append(label) description = generate_description(found_items) insult = generate_insult(found_items) return f"{description} {insult}" def generate_description(items): if not items: return "Ich sehe absolut gar nichts." translated_items = [label_map.get(item, f"ein {item}") for item in set(items)] if len(translated_items) == 1: return f"Ich sehe {translated_items[0]}." last_item = translated_items.pop() return f"Ich sehe {', '.join(translated_items)} und {last_item}." def generate_insult(items): # Mapping von Objekten zu nervigen Kommentaren insults = { "cup": [ "Matthias, die Tasse auf dem Tisch hat mittlerweile ein eigenes Ökosystem. Räum sie weg!", "Ist das Kunst oder kann das weg? Ich meine die Tasse, Matthias.", "Noch eine Tasse? Willst du ein Café eröffnen oder bist du einfach nur faul?" ], "bottle": [ "Leergut gehört in die Kiste, nicht in mein Sichtfeld.", "Flasche leer, Kopf leer? Bring das Ding weg." ], "cell phone": [ "Schon wieder am Handy? Kein Wunder, dass hier nichts vorangeht.", "Digital Detox würde dir gut tun, Matthias. Leg das Ding weg." ] } # Schauen, ob wir was zum Meckern finden for item, phrases in insults.items(): if item in items: return random.choice(phrases) if not items: return "Ich bin mir aber sicher, du hast irgendwo Dreck versteckt." return "Eigentlich sieht alles okay aus... Das macht mich erst recht misstrauisch."