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

# Videoveiledning for YUYV på stellarHD

> Ta opp, lagre og konverter ukomprimerte YUYV-bilder fra stellarHD, inkludert monokrome modeller.

## Oversikt

stellarHD eksponerer to videoformater over sitt standard UVC-grensesnitt (USB Video Class):

* **MJPEG** — JPEG-komprimerte bilder. Best for høye bildefrekvenser (opp til 60 FPS) og direkte visning.
* **YUYV** — ukomprimert 4:2:2 rå video. Best når du trenger de originale, ubehandlede pikseldataene (maskinsyn, fotogrammetri, vitenskapelig avbildning).

Denne veiledningen fokuserer på **YUYV (RAW)**-opptak: hvordan du henter ekte råbilder, lagrer dem til disk og konverterer dem for inspeksjon. Den dekker også en detalj som er spesifikk for **monokrome stellarHD-modeller**, der bare luminanskanalen (`Y`) inneholder ekte bildedata.

<Note>
  YUYV er ukomprimert, så det bruker langt mer USB-båndbredde enn MJPEG. Som et resultat er rå-modus begrenset til lavere bildefrekvenser ved høyere oppløsninger. Se [tekniske spesifikasjoner for stellarHD](/no/stellarHD/specs/stellarHD#støttede-oppløsninger-og-bildefrekvenser) for de støttede kombinasjonene av oppløsning/bildefrekvens.
</Note>

## Krav

Disse kommandoene krever en Linux-datamaskin med `v4l-utils`, GStreamer og FFmpeg installert:

```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
```

## Forstå YUYV vs MJPEG

|                 | YUYV (ukomprimert)                  | MJPEG                                       |
| --------------- | ----------------------------------- | ------------------------------------------- |
| Komprimering    | Ingen (4:2:2 ukomprimert)           | JPEG-komprimert                             |
| Bruksområde     | Rå pikseldata, analyse              | Høy bildefrekvens, sanntids forhåndsvisning |
| Bildefrekvens   | Lavere ved høy oppløsning           | Opp til 60 FPS                              |
| Filstørrelse    | `bredde × høyde × 2` byte per bilde | Variabel (liten)                            |
| Direkte visning | Nei (rå byte)                       | Ja (hvert bilde er en JPEG)                 |

I GStreamer-caps skrives V4L2-formatet `YUYV` som `YUY2`.

<Warning>
  **«YUYV» er ukomprimert, men det er ikke sensor-rått.** I kameraterminologi betyr *rått* den
  ubehandlede **Bayer-mosaikken** direkte fra sensoren — én fargeprøve per piksel, før
  demosaikering, hvitbalansering eller fargekonvertering. YUYV 4:2:2 (`YUY2`) er noe annet:
  det er kameraets **allerede behandlede utdata** — Bayer-dataene er demosaikert i
  kameraet, konvertert til YUV-fargerommet og krominansundersamplet (4:2:2 lagrer to krominans-
  prøver for hver andre luminansprøve). Dette gjelder for både fargemodeller og monokrome modeller:
  utdataene er ukomprimert, men fortsatt behandlet og undersamplet.

  stellarHD eksponerer **ikke** de underliggende Bayer-/sensor-rå-dataene over UVC, så du
  **kan ikke** hente en rå mosaikk eller kjøre din egen demosaikering. «Rå» i denne veiledningen
  betyr *ukomprimerte pikseldata*, ikke *sensor-rått*.
</Warning>

## Trinn 1 — Identifiser enhetsnoden

Når du kobler til en stellarHD, oppretter kjernen flere V4L2-enhetsnoder. Både YUYV og MJPEG eksponeres på den **første** noden i gruppen.

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

Eksempel på utdata:

```text theme={null}
stellarHD Leader: stellarHD Lea (usb-0000:00:14.0-6):
	/dev/video4   # <-- this node outputs both YUYV and MJPEG
	/dev/video5
	/dev/media2
```

I dette eksempelet er `/dev/video4` noden som skal brukes. Bytt ut med din egen node i kommandoene nedenfor.

<Tip>
  Bekreft formatene, oppløsningene og bildefrekvensene kameraet annonserer før du tar opp:

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

  Du bør se både `YUYV`-oppføringer (ukomprimert 4:2:2) og `MJPG`-oppføringer (MJPEG-komprimert).
</Tip>

## Trinn 2 — Ta opp ett enkelt RAW-bilde

Bruk `v4l2-ctl` for å ta opp ett ukomprimert YUYV-bilde i full oppløsning:

```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
```

Dette skriver de rå YUYV-bytene direkte til `frame_1600x1200.yuyv`.

### Bekreft bildestørrelsen

Et komplett råbilde skal være nøyaktig `bredde × høyde × 2` byte:

```text theme={null}
1600 × 1200 × 2 = 3,840,000 bytes (~3.8 MB)
```

Hvis filstørrelsen stemmer, har du tatt opp et komplett råbilde.

## Trinn 3 — Konverter RAW-bildet til PNG

Rå YUYV-byte er ikke direkte synlige. Bruk FFmpeg for å konvertere bildet til en PNG for inspeksjon:

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

<Warning>
  Du må oppgi til FFmpeg det nøyaktige pikselformatet (`yuyv422`) og oppløsningen (`-video_size`) for rå-filen. Rå video har ingen header, så hvis disse verdiene ikke samsvarer med opptaket, vil bildet se skjevt eller korrupt ut.
</Warning>

## Monokrome stellarHD-modeller

På grunn av en særegenhet i UVC annonserer den monokrome stellarHD-en utdataene sine som `YUYV 4:2:2` selv om sensoren ikke har fargeinformasjon.

* Kun **`Y` (luminans)**-kanalen inneholder det ekte bildet.
* **`U`- og `V` (krominans)**-kanalene er dummy-/faste verdier og kan ignoreres.

Hvis du konverterer et monokromt bilde som fullfarge, kan du se falske fargestikk fra de meningsløse krominansdataene. Hent kun ut gråskala:

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

Dette bruker kun luminanskanalen og unngår falsk krominanstolkning.

### Bekreft at kameraet faktisk er monokromt

Spill av rå-filen direkte med `ffplay`. Hvis bildet ser gråskala ut naturlig, er krominanskanalene konstante:

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

## GStreamer-pipelines

### Vis den direkte råstrømmen

```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
```

### Lagre ett råbilde til disk

```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
```

### Raskere forhåndsvisning med MJPEG

Siden YUYV er begrenset til lave bildefrekvenser ved høy oppløsning, bruk MJPEG når du kun trenger en jevn sanntids forhåndsvisning:

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

## Henting av luminans i OpenCV / Python

Hvis du behandler råbilder nedstrøms og sensoren din er monokrom, hent ut luminanskanalen i stedet for å behandle bildet som farge.

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

Eller konverter eksplisitt fra YUY2:

```python theme={null}
import cv2

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

<Card title="OpenCV-guide" icon="https://github.com/opencv/opencv/wiki/logo/OpenCV_logo_no_text.png" href="/no/stellarHD/guides/opencv-stellarHD">
  Se vår fullstendige guide for bruk av stellarHD med OpenCV.
</Card>

## Feilsøking

### Utdatafilen har feil størrelse

Et komplett råbilde er nøyaktig `bredde × høyde × 2` byte. En mindre fil betyr vanligvis at opptaket ble avbrutt, eller at den forespurte oppløsningen ikke støttes i YUYV-modus — sjekk `v4l2-ctl -d /dev/video4 --list-formats-ext`.

### Det konverterte bildet er skjevt eller forvrengt

`-pixel_format` og `-video_size` som sendes til FFmpeg må samsvare nøyaktig med opptaket. Rå video har ingen header, så et hvilket som helst avvik vil korrumpere oppsettet.

### Bildet ser tonet ut på et monokromt kamera

Krominanskanalene bærer ingen reelle data på en monokrom sensor. Konverter på nytt med `-vf format=gray` (FFmpeg) eller hent ut `Y`-kanalen (OpenCV) som vist ovenfor.

### YUYV-bildefrekvensen er for lav

Dette er forventet — ukomprimert video krever mye båndbredde. Reduser oppløsningen, senk bildefrekvensen, eller bytt til MJPEG for sanntidsvisning.
