> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dwe.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# stellarHD YUYV-Videoanleitung

> Unkomprimierte YUYV-Frames der stellarHD erfassen, speichern und konvertieren – einschließlich Monochrom-Modellen.

## Übersicht

Die stellarHD stellt über ihre standardmäßige UVC-Schnittstelle (USB Video Class) zwei Videoformate bereit:

* **MJPEG** — JPEG-komprimierte Frames. Am besten geeignet für hohe Bildraten (bis zu 60 FPS) und Live-Anzeige.
* **YUYV** — unkomprimiertes 4:2:2-Rohvideo. Am besten geeignet, wenn Sie die originalen, unverarbeiteten Pixeldaten benötigen (maschinelles Sehen, Photogrammetrie, wissenschaftliche Bildgebung).

Diese Anleitung konzentriert sich auf die **YUYV-(RAW-)Aufnahme**: wie Sie echte Rohframes erfassen, auf Festplatte speichern und zur Inspektion konvertieren. Sie behandelt außerdem einen Detailaspekt speziell zu **Monochrom-stellarHD-Modellen**, bei denen nur der Luminanzkanal (`Y`) echte Bilddaten enthält.

<Note>
  YUYV ist unkomprimiert und verbraucht daher weit mehr USB-Bandbreite als MJPEG. Aus diesem Grund ist der Rohmodus bei höheren Auflösungen auf niedrigere Bildraten begrenzt. Sehen Sie in den [technischen Spezifikationen der stellarHD](/de/stellarHD/specs/stellarHD#unterstützte-auflösungen-und-bildraten) nach, welche Kombinationen aus Auflösung und Bildrate unterstützt werden.
</Note>

## Voraussetzungen

Diese Befehle erfordern einen Linux-Computer mit installierten Tools `v4l-utils`, GStreamer und FFmpeg:

```bash theme={null}
sudo apt install v4l-utils ffmpeg \
  libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools \
  gstreamer1.0-x gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
  gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-plugins-ugly
```

## YUYV vs. MJPEG verstehen

|                  | YUYV (unkomprimiert)               | MJPEG                         |
| ---------------- | ---------------------------------- | ----------------------------- |
| Kompression      | Keine (4:2:2 unkomprimiert)        | JPEG-komprimiert              |
| Anwendungsfall   | Rohpixeldaten, Analyse             | Hohe Bildrate, Live-Vorschau  |
| Bildrate         | Niedriger bei hoher Auflösung      | Bis zu 60 FPS                 |
| Dateigröße       | `Breite × Höhe × 2` Byte pro Frame | Variabel (klein)              |
| Direkt anzeigbar | Nein (Rohbytes)                    | Ja (jeder Frame ist ein JPEG) |

In GStreamer-Caps wird das V4L2-Format `YUYV` als `YUY2` geschrieben.

<Warning>
  **„YUYV" ist unkomprimiert, aber nicht sensor-roh.** In Kamerabegriffen bedeutet *raw* das
  unverarbeitete **Bayer-Mosaik** direkt vom Sensor – ein Farbmuster pro Pixel, vor
  Demosaicing, Weißabgleich oder Farbkonvertierung. YUYV 4:2:2 (`YUY2`) ist etwas anderes:
  Es ist die **bereits verarbeitete Ausgabe** der Kamera – die Bayer-Daten wurden in der
  Kamera demosaikt, in den YUV-Farbraum konvertiert und chroma-unterabgetastet (4:2:2 speichert
  zwei Chroma-Samples auf je zwei Luma-Samples). Dies gilt sowohl für die Farb- als auch für die
  Monochrom-Modelle: Die Ausgabe ist unkomprimiert, aber dennoch verarbeitet und unterabgetastet.

  Die stellarHD stellt die zugrunde liegenden Bayer-/Sensor-Rohdaten **nicht** über UVC bereit,
  sodass Sie **kein** rohes Mosaik abrufen oder Ihre eigene Demosaicing-Pipeline betreiben
  können. Das „raw" in dieser Anleitung meint *unkomprimierte Pixeldaten*, nicht *Sensor-Raw*.
</Warning>

## Schritt 1 – Geräteknoten identifizieren

Wenn Sie eine stellarHD anschließen, erstellt der Kernel mehrere V4L2-Geräteknoten. Sowohl YUYV als auch MJPEG werden über den **ersten** Knoten der Gruppe bereitgestellt.

```bash theme={null}
v4l2-ctl --list-devices
```

Beispielausgabe:

```text theme={null}
stellarHD Leader: stellarHD Lea (usb-0000:00:14.0-6):
	/dev/video4   # <-- dieser Knoten gibt sowohl YUYV als auch MJPEG aus
	/dev/video5
	/dev/media2
```

In diesem Beispiel ist `/dev/video4` der zu verwendende Knoten. Ersetzen Sie ihn in den folgenden Befehlen durch Ihren eigenen Knoten.

<Tip>
  Bestätigen Sie die von Ihrer Kamera angebotenen Formate, Auflösungen und Bildraten, bevor Sie aufnehmen:

  ```bash theme={null}
  v4l2-ctl -d /dev/video4 --list-formats-ext
  ```

  Sie sollten sowohl `YUYV`- (unkomprimiert 4:2:2) als auch `MJPG`-Einträge (MJPEG-komprimiert) sehen.
</Tip>

## Schritt 2 – Ein einzelnes RAW-Bild aufnehmen

Verwenden Sie `v4l2-ctl`, um einen unkomprimierten YUYV-Frame in voller Auflösung aufzunehmen:

```bash theme={null}
v4l2-ctl -d /dev/video4 \
  --set-fmt-video=width=1600,height=1200,pixelformat=YUYV \
  --stream-mmap \
  --stream-count=1 \
  --stream-to=frame_1600x1200.yuyv
```

Dadurch werden die rohen YUYV-Bytes direkt in `frame_1600x1200.yuyv` geschrieben.

### Framegröße überprüfen

Ein vollständiger Rohframe sollte exakt `Breite × Höhe × 2` Byte groß sein:

```text theme={null}
1600 × 1200 × 2 = 3.840.000 Byte (~3,8 MB)
```

Wenn die Dateigröße übereinstimmt, haben Sie einen vollständigen Rohframe aufgenommen.

## Schritt 3 – Den RAW-Frame in PNG konvertieren

Rohe YUYV-Bytes sind nicht direkt anzeigbar. Verwenden Sie FFmpeg, um den Frame zur Inspektion in ein PNG umzuwandeln:

```bash theme={null}
ffmpeg \
  -f rawvideo \
  -pixel_format yuyv422 \
  -video_size 1600x1200 \
  -i frame_1600x1200.yuyv \
  frame.png
```

<Warning>
  Sie müssen FFmpeg das exakte Pixelformat (`yuyv422`) und die Auflösung (`-video_size`) der Rohdatei angeben. Rohvideos haben keinen Header. Wenn diese Werte nicht mit der Aufnahme übereinstimmen, erscheint das Bild verzerrt oder beschädigt.
</Warning>

## Monochrom-Modelle der stellarHD

Aufgrund einer UVC-Eigenheit gibt die monochrome stellarHD ihre Ausgabe als `YUYV 4:2:2` an, obwohl der Sensor keine Farbinformationen besitzt.

* Nur der Kanal **`Y` (Luminanz)** enthält das echte Bild.
* Die Kanäle **`U` und `V` (Chroma)** sind Dummy-/feste Werte und können ignoriert werden.

Wenn Sie einen monochromen Frame als Vollfarbe konvertieren, kann eine falsche Färbung durch die bedeutungslosen Chromadaten auftreten. Extrahieren Sie ausschließlich Graustufen:

```bash theme={null}
ffmpeg \
  -f rawvideo \
  -pixel_format yuyv422 \
  -video_size 1600x1200 \
  -i frame_1600x1200.yuyv \
  -vf format=gray \
  mono.png
```

Dabei wird nur der Luminanzkanal verwendet und eine fehlerhafte Chroma-Interpretation vermieden.

### Bestätigen, dass die Kamera tatsächlich monochrom ist

Spielen Sie die Rohdatei direkt mit `ffplay` ab. Wenn das Bild von Natur aus in Graustufen erscheint, sind die Chromakanäle konstant:

```bash theme={null}
ffplay \
  -f rawvideo \
  -pixel_format yuyv422 \
  -video_size 1600x1200 \
  frame_1600x1200.yuyv
```

## GStreamer-Pipelines

### Den Live-Rohstream anzeigen

```bash theme={null}
gst-launch-1.0 \
  v4l2src device=/dev/video4 ! \
  video/x-raw,format=YUY2,width=1600,height=1200,framerate=5/1 ! \
  videoconvert ! \
  autovideosink
```

### Einen Rohframe auf Festplatte speichern

```bash theme={null}
gst-launch-1.0 -e \
  v4l2src device=/dev/video4 num-buffers=1 ! \
  video/x-raw,format=YUY2,width=1600,height=1200,framerate=5/1 ! \
  filesink location=frame.yuyv
```

### Schnellere Vorschau mit MJPEG

Da YUYV bei hoher Auflösung auf niedrige Bildraten begrenzt ist, verwenden Sie MJPEG, wenn Sie lediglich eine flüssige Echtzeitvorschau benötigen:

```bash theme={null}
gst-launch-1.0 \
  v4l2src device=/dev/video4 ! \
  image/jpeg,width=1600,height=1200,framerate=30/1 ! \
  jpegdec ! \
  videoconvert ! \
  autovideosink
```

## Luminanz in OpenCV / Python extrahieren

Wenn Sie Rohframes weiterverarbeiten und Ihr Sensor monochrom ist, extrahieren Sie den Luminanzkanal, anstatt den Frame als Farbe zu behandeln.

```python theme={null}
# YUYV frame loaded as a 3-channel array — the Y channel is the real image
gray = frame[:, :, 0]
```

Oder konvertieren Sie explizit von YUY2:

```python theme={null}
import cv2

gray = cv2.cvtColor(frame, cv2.COLOR_YUV2GRAY_YUY2)
```

<Card title="OpenCV-Anleitung" icon="https://github.com/opencv/opencv/wiki/logo/OpenCV_logo_no_text.png" href="/de/stellarHD/guides/opencv-stellarHD">
  Siehe unsere vollständige Anleitung zur Verwendung der stellarHD mit OpenCV.
</Card>

## Fehlerbehebung

### Die Ausgabedatei hat die falsche Größe

Ein vollständiger Rohframe ist exakt `Breite × Höhe × 2` Byte groß. Eine kleinere Datei bedeutet in der Regel, dass die Aufnahme unterbrochen wurde oder die angeforderte Auflösung im YUYV-Modus nicht unterstützt wird – prüfen Sie mit `v4l2-ctl -d /dev/video4 --list-formats-ext`.

### Das konvertierte Bild ist verzerrt oder unleserlich

Die an FFmpeg übergebenen Werte für `-pixel_format` und `-video_size` müssen exakt mit der Aufnahme übereinstimmen. Rohvideos haben keinen Header, sodass jede Abweichung das Layout zerstört.

### Das Bild wirkt bei einer Monochromkamera eingefärbt

Die Chromakanäle enthalten bei einem Monochromsensor keine echten Daten. Konvertieren Sie erneut mit `-vf format=gray` (FFmpeg) oder extrahieren Sie den `Y`-Kanal (OpenCV) wie oben gezeigt.

### Die YUYV-Bildrate ist zu niedrig

Das ist zu erwarten – unkomprimiertes Video ist bandbreitenintensiv. Reduzieren Sie die Auflösung, senken Sie die Bildrate oder wechseln Sie für die Live-Anzeige zu MJPEG.
