SUSCam ist ein experimentelles Projekt zur Echtzeit-Personenerkennung und Kamerafernsteuerung mit Python, OpenCV und MediaPipe – entwickelt für den Workshop „SUSCam“ beim ASM25 des Chaos Computer Club München.
Ziel ist es, in kurzer Zeit einen funktionierenden Bildverarbeitungs-Workflow aufzubauen, mit dem Teilnehmer*innen visuelle Daten auswerten und gleichzeitig eine Kamera live per WebSocket steuern können. Die Anwendung ist bewusst offen gestaltet – zum Hacken, Erweitern und Infragestellen.
Sollte die externe Kamera nicht verfügbar sein, wird automatisch auf eine lokale Webcam umgeschaltet. Die Schnittstellen bleiben dabei gleich – allerdings sind dann motorisierte Funktionen deaktiviert.
MediaPipe ist eine Open-Source-Bibliothek von Google für Echtzeit-Computer-Vision-Anwendungen. Sie bringt leistungsfähige Module wie Hand-, Gesichts- und Körpererkennung direkt in Python-Projekte – ohne tiefes Machine-Learning-Wissen.
Im Rahmen dieses Projekts dient MediaPipe zur schnellen Visualisierung und Analyse von Kameradaten – ideal für interaktive Anwendungen wie „Person verfolgen“, „Hand zeigen = Kamera schwenkt“ oder eigene Ideen.
Weitere Ressourcen:
Die Kamera im Projekt kann live über einfache WebSocket-Kommandos gesteuert werden – etwa zur Positionierung, Frame-Abfrage oder Statusinfo.
| Befehl | Funktion |
|---|---|
getframe |
Aktuelles Kamerabild senden |
center |
Kamera auf Startposition setzen |
up/down |
Kamera vertikal bewegen |
left/right |
Kamera horizontal bewegen |
get_pos |
Gibt aktuelle Position als JSON |
get_limits |
Gibt X/Y-Grenzen als JSON zurück |
client_count |
Gibt Anzahl verbundener Clients |
{"x": 100, "y": 50} |
Direkte Positionssteuerung via JSON |
light_on/off |
(Derzeit deaktiviert) Lichtsteuerung |
Das Steuerprotokoll ist einfach gehalten – ideal für eigene Steuerungs-Apps, UIs oder Automatisierungen. Die Details findest du in tools/cam.py.
SUSCam/
├── .env # Umgebungsvariablen (z.B. Kamera-IP)
├── app.py # Hauptstream-Anwendung mit OpenCV
├── requirements.txt # Python-Abhängigkeiten
├── examples/ # Beispielskripte für Nutzung & Steuerung
│ ├── camera_infos.py
│ ├── camera_stream_mediapipe.py
│ ├── camera_stream_opencv.py
│ └── move_camera.py
└── tools/
└── cam.py # Kamera-Klasse für Steuerung & Streaming
Für Umgebungsvariablen gibt es eine
.env-Datei (siehe.env.examplefür Vorlage).
- Python-Umgebung vorbereiten:
git clone https://github.com/Friedjof/SUSCam.git
cd SUSCam
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt.env-Datei anpassen:
SUS_IP=192.168.XXX.XXX- Beispiele ausführen:
python examples/camera_stream_opencv.py| Script | Zweck |
|---|---|
camera_infos.py |
Liest Position, Limits und Clientanzahl über WebSocket. |
camera_stream_opencv.py |
Zeigt den Live-Stream der Kamera mit OpenCV. |
camera_stream_mediapipe.py |
Erweitert um Handerkennung via MediaPipe. |
move_camera.py |
Führt Bewegungsbefehle aus (links, rechts, usw.). |
Alle Skripte nutzen automatisch die in
.envkonfigurierte IP-Adresse.
Mit pyvirtualcam kann der Kamerastream als virtuelle Webcam bereitgestellt werden. So können andere Anwendungen (z.B. Videokonferenz-Tools) den Live-Stream nutzen.
sudo apt install v4l2loopback-dkms
sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="SUSCam Virtual Camera" exclusive_caps=1
pip install pyvirtualcampip install pyvirtualcam- Dieses Projekt ist ein Lern- und Diskussionswerkzeug – kein fertiges Produkt.
- Datenschutz und ethische Aspekte sollten bei eigenen Anwendungen aktiv mitgedacht werden.
- Technische Störungen (Netzwerk, Kamera, Betriebssystem-Inkompatibilitäten) können vorkommen – es gibt Fallbacks.
Dieses Projekt steht unter der MIT-Lizenz. Du kannst es frei nutzen, modifizieren und weiterverbreiten.
Dieses Projekt entstand im Rahmen des Workshops „SUSCam“ beim ASM25. Fragen, Ideen oder Erweiterungen? → Öffne ein Issue oder sprich mich beim ASM25 direkt an.
