# 🐍 Snake Gestures Backup (v4)

## 🎯 Ziel

Wiederherstellung der funktionierenden Gesterkennung inkl. Faust (fist) und Wave unter realistischen Kinder-Testbedingungen.

---

## 🧠 Ausgangslage

* Ursprünglich funktionierte **Wave** und **Fist**
* Nach Umstellungen (Spiegelung, Ordnerstruktur, Namensänderungen, debug) – ging **nur noch Wave**
* Analyse zeigte: die Faust-Geste wurde **nicht mehr korrekt klassifiziert** trotz erkennbarer Konturen

---

## ✅ Bekannte funktionierende Parameter (aus v2)

* **ROI** korrekt gesetzt (Region of Interest)
* **Konturerkennung** stabil bei Flächen zwischen `3000 - 7000`
* **Fehlerquelle**: evtl. geänderte Bedingungen für defect count oder ratio

### 🧪 Klassifikation aus v2:

```python
if defects_count > 4:
    return "wave"
elif defects_count <= 1 and 0.8 < ratio < 1.3:
    return "fist"
else:
    return "unknown"
```

---

## 🔁 Probleme bei v4

* Ratio wird bei Faust dauerhaft mit `1.00` angegeben
* Kein Fall `0.8 < ratio < 1.3` scheint erkannt zu werden
* Kamera spiegelverkehrt, ROI ggf. verschoben

---

## ✅ Empfehlung zur Wiederherstellung der Fist-Erkennung

### 1. Klassifikationslogik zurücksetzen:

```python
if defects_count > 4:
    gesture = "wave"
elif defects_count <= 1 and 0.8 < ratio < 1.3:
    gesture = "fist"
else:
    gesture = "unknown"
```

### 2. Debug-Logs aktiv halten:

```python
print(f"[debug] Defekte: {defects_count}, Fläche: {area}, Ratio: {ratio:.2f}")
```

### 3. Ratio-Kalkulation überprüfen:

```python
x, y, w, h = cv2.boundingRect(contour)
ratio = float(w) / h if h != 0 else 0
```

---

## 🪄 Zusatztipp: Spiegelung

Um Kamera-Richtung wie im Selfie-Modus zu korrigieren:

```python
frame = cv2.flip(frame, 1)
```

Nicht doppelt spiegeln!

---

## 🧊 Fazit

Wir sind **nah dran**. Die Faust war da. Sie kann wieder zurückkommen. Der Weg führt über sorgfältige Parameterkontrolle.
Wenn nötig: `gestures_v2.py` als Referenz verwenden und von dort migrieren. Lass die Kinder *bauen, nicht verzweifeln*.

---

## 📁 Backup-Dateien

* gestures\_v2.py (Backup liegt vor)
* gestures\_v4.py (aktuelle Testversion)
* app.py (v4, in /snake\_camera\_vision\_v2/)

**📌 Nächster Schritt:**
Stabile Faust wiederherstellen, dann *eine neue Geste* hinzufügen (z.B. Daumen hoch 👍)
