Schleife, welche eigentlich keine ist?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
joernius
User
Beiträge: 31
Registriert: Donnerstag 11. Juni 2020, 13:47
Wohnort: Dresden
Kontaktdaten:

Hallo zusammen,

kurz zu mir: meine Vorkenntnisse sind leider fast nur auf die Shell beschränkt :x

Ich habe auf github einen minmalen, aber sehr zuverlässigen Code zur Gesichtserkennung mittels face-detect gefunden.:
https://github.com/DoryAzar/FaceDetectPython
Als Referenz wird nur ein einzige Bild benötigt.

Die Ausführung besteht in der minimalsten Version aus zwei Zeilen plus Import:

Code: Alles auswählen

from FaceDetect.facedetect import FaceDetect

facedetector = FaceDetect({'method': 'recognize', 'known-faces': {'Joern': 'resources/joern.png', 'Tabea': 'resources/tabea.png'}})
facedetector.start()
Beim Start wird die Kamera auf /dev/video0 geöffnet, um das Gesicht erscheint ein Rahmen mit dem Namen oder der Begriff "Unbekannt".
Dabei gehen, wohl von der Bibliothek aus, einige Daten plus Namen auf stdout.

Um dieses zu verhindern, plazierte ich erst eine Anweisung zwischen den beiden Zeilen. Ohne Erfolg. Der gewünschte Effekt der Umleitung der Ausgabe trat erst ein, als ich die Anweisung vor den Konstrukt legte :?: :

Code: Alles auswählen

import sys
from FaceDetect.facedetect import FaceDetect

sys.stdout = open('stdout.txt', 'w')

from FaceDetect.facedetect import FaceDetect
facedetector = FaceDetect({'method': 'recognize', 'known-faces': {'Joern': 'resources/joern.png',
                                                                  'Franziska': 'resources/franziska-van-almsick.png',
                                                                  'Tabea': 'resources/tabea.png'}})
facedetector.start()

Dazu habe ich zwei Fragen:
- Wie kommt das, dass die stdout-Anweisung an dieser Stelle, also vor der facedetector-Anweisung, funktioniert?
- Ist es möglich, stdout zu greppen bzw. in mehrere Dateien zu selektieren, um pro Name eine Datei, idealerweise mit Datum, zu erhalten?

Danke für eure Überlegungen :)

VG
Jörn
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Statt solches gewuerge mit irgendwelchen Umleitungen kannst du den Code einfach veraendern. Das ist ja nicht viel, und in __generate_detections zB kannst du deinen Code einfuegen. Das unterdruecken des prints ist mit der settings-Angabe machbar.
Benutzeravatar
Kebap
User
Beiträge: 776
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

1. Das funktioniert, weil du der nachfolgenden Anweisung hier nur sagst, wo sie hinschreiben soll, wenn sie mal was auf stdout schreiben will.
2. Es ist sogar noch viel einfacher möglich und gar nicht nötig stdout zu greppen, weil der Code dir ermöglicht, eigene Funktionen einzufügen:
https://github.com/DoryAzar/FaceDetectPython#extending-the-capabilities-of-facedetect
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten