Skip to content

Friedjof/SUSCam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SUSCam 👁️🎥

SUSCam Deckblatt

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

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:


🕹️ Kamerafernsteuerung via WebSocket

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.


📦 Projektstruktur

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.example für Vorlage).

▶️ Schnellstart

  1. 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
  1. .env-Datei anpassen:
SUS_IP=192.168.XXX.XXX
  1. Beispiele ausführen:
python examples/camera_stream_opencv.py

🎓 Beispiele (kurz erklärt)

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 .env konfigurierte IP-Adresse.

📷 Bonus: Virtuelle Kamera

Mit pyvirtualcam kann der Kamerastream als virtuelle Webcam bereitgestellt werden. So können andere Anwendungen (z.B. Videokonferenz-Tools) den Live-Stream nutzen.

Ubuntu

sudo apt install v4l2loopback-dkms
sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="SUSCam Virtual Camera" exclusive_caps=1
pip install pyvirtualcam

Windows

pip install pyvirtualcam

🔐 Hinweise

  • 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.

📝 Lizenz

Dieses Projekt steht unter der MIT-Lizenz. Du kannst es frei nutzen, modifizieren und weiterverbreiten.

🙋 Mitmachen & Feedback

Dieses Projekt entstand im Rahmen des Workshops „SUSCam“ beim ASM25. Fragen, Ideen oder Erweiterungen? → Öffne ein Issue oder sprich mich beim ASM25 direkt an.