Update Dokumentationen/Backend/VideoFeed authored by Michael Pietschmann's avatar Michael Pietschmann
## Allgemeine Informationen zu der Klasse
Wir haben uns dazu entschieden, den Videofeed als eigenständige Klasse zu implementieren und in das Backend zu integrieren. Die Klasse verfügt über zwei Klassenmethoden. Generate ist dafür gedacht, den Videofeed der Kamera über dem Tisch an den Webclient zu übertragen und wird von der Management-Klasse aufgerufen.<br> Die zweite Methode, get_snapshot, wird von [#18] aufgerufen.
## Methoden in der Klasse
* <ins> + generate(cls) </ins>
* <ins> + get_snapshot(cls): byte array </ins>
**generate(cls)**
* Diese Methode ist dafür zuständig das aktuelle Kamerabild abzugreifen und zu verschicken. Dies wird in einer Schleife wiederholt, wodurch ein Video entsteht.
* Die Kamera wird beim starten des scripts mit `vs = VideoStream(src=0).start()` referenziert. `src=0` beschreibt hierbei, dass die erste Kamera, die das Betriebssystem erkannt hat, genommen werden soll. Falls mehrere Kameras an das System angeschlossen sind, könnte hier die source auch verändert werden.
* In der Schleife der Methode wird das aktuelle Bild der referenzierten Kamera abgegriffen. Falls das Bild erfolgreich ausgelesen werden konnte, sendet die Methode das aktuelle Bild als Bytecode an den Methodenaufrufer zurück. Dabei setze auch die Flag `Content-Type: image/jpeg` damit der Bytecode wieder erfolgreich zurück konvertiert werden kann. Durch `yield` wird der Bytecode zurückgeschickt. Die Schleife wird jedoch nicht abgebrochen, sodass im nächsten Schleifendurchlauf der nächste Frame des Videos zurück geschickt werden kann.
**get_snapshot(cls)**
* Diese Methode nimmt das aktuelle Bild der Kamera auf, konvertiert es in einen byte Array und gibt diesen zurück.
* Genauere Informationen zur Funktionalität können in der generate-Methode (siehe oben) nachgelesen werden. Mit dem Unterschied, dass nur ein Bild abgegriffen wird und kein Feed.
* Es ist so angedacht, dass diese Methode vom Use Case [#18] aufgerufen wird. Dieser erhält das Bild und kann damit weiterarbeiten.
\ No newline at end of file