Seite 1 von 1

Schleife, welche eigentlich keine ist?

Verfasst: Dienstag 17. Januar 2023, 12:05
von joernius
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

Re: Schleife, welche eigentlich keine ist?

Verfasst: Dienstag 17. Januar 2023, 12:12
von __deets__
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.

Re: Schleife, welche eigentlich keine ist?

Verfasst: Dienstag 17. Januar 2023, 12:17
von Kebap
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