Hallo zusammen! Ich bräuchte mal einen Tipp, wie ich folgendes Problem lösen kann. Gleich vorab vielen Dank für eure Unterstützung!
Ein python-Script aus dem Bereich maschinelles Lernen erzeugt mir Daten erkannter Objekte. Aus dem String (detections) habe ich einen Teil bereits ausschneiden können. Dazu habe ich folgenden Code verwendet:
slice = (detections)[1:]
slice2 = (slice)
print (slice2)
Damit bekomme ich nun folgendes:
[Detection(bounding_box=Rect(left=12, top=212, right=172, bottom=326), categories=[Category(label='tv', score=0.5, index=71)])]
[Detection(bounding_box=Rect(left=14, top=210, right=177, bottom=328), categories=[Category(label='person', score=0.60546875, index=71)])]
[Detection(bounding_box=Rect(left=9, top=208, right=175, bottom=324), categories=[Category(label='cat', score=0.6484375, index=71)])]
[Detection(bounding_box=Rect(left=9, top=209, right=175, bottom=323), categories=[Category(label='tv', score=0.62890625, index=71)])]
u.s.w.
Ich benötige aber nur den Teil aus label=’...’
Kurz in dem Beispiel also: tv bzw. person, etc.
Teilausschnitt aus einer Variablen
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
Es ist eher ungut zu versuchen die Infos aus den String-Repräsentationen von Objekten raus zu schnibbeln. Was enthält `detections`? Am besten greifst du einfach auf die entsprechenden Attribute zu.
ungetestet:
Ggf. sind die Ergebnisse etwas mehr oder etwas weniger verschachtelt - das kann ich aus deinem Code-Bruchteil und der Ausgabe nicht so recht erahnen. Wenn du uns den Code dazu zeigst, dann lässt sich mehr sagen.
ungetestet:
Code: Alles auswählen
for detectionset in detections:
for detection in detectionset:
for category in detection.categories:
print(category.label)
Erstmal vielen Dank (!!!) für die rasche Antwort. Die hat mir zwar nicht die direkt Lösung gebracht. Aber ich habe dadurch erstens meinen Fehler endeckt und bin nun auch auf die Lösung gekommen. Es gibt in dieser TensorFlow Installation für den Raspberry Pi 4 drei wesentliche Scripte. detect.py, object_detector.py und utilis.py. In letzterer steckt die Lösung und nennt sich print (result_text). Super! Jetzt kann ich den nächsten Schritt angehen.
Ich will die erfassten Objekte nutzen. Erstens um die Daten via API in ein Google Sheet wegzuschreiben und zweitens um eine Aktion anzustoßen. Ich werde zunächst mit if probieren ein Objekt zu identifizieren und dann einen espeak Befehl auszulösen, wenn bspw. das bestimmte Objekt erkannt wurde. Bspw. object ist cat = espeak -vde "Katze".
Ich mache mir eine sh dazu alert_cat.sh
in die schreibe ich espeak -vde "Katze", u.s.w.
if (result_text) == "cat"
bash alertcat.sh
elif (result_text) == "dog"
bash alert_dog.sh
so etwa, dachte ich
Ich will die erfassten Objekte nutzen. Erstens um die Daten via API in ein Google Sheet wegzuschreiben und zweitens um eine Aktion anzustoßen. Ich werde zunächst mit if probieren ein Objekt zu identifizieren und dann einen espeak Befehl auszulösen, wenn bspw. das bestimmte Objekt erkannt wurde. Bspw. object ist cat = espeak -vde "Katze".
Ich mache mir eine sh dazu alert_cat.sh
in die schreibe ich espeak -vde "Katze", u.s.w.
if (result_text) == "cat"
bash alertcat.sh
elif (result_text) == "dog"
bash alert_dog.sh
so etwa, dachte ich
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@TechCree: Das klingt ein bisschen kompliziert erst Shell-Skripte zu schreiben und die aufzurufen. Dazu mit Syntax die nicht Python ist. Schreib Dir eine Funktion die ``espeak`` direkt von Python aus aufruft, mit `subprocess.run()` aus der Standardbibliothek. Und bitte ohne ``shell=True`` und/oder da auch wieder eine unnötige Bash dazwischen zu schalten.
Was sollen die Klammern um `result_text`?
Was sollen die Klammern um `result_text`?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman