Ü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).
Y) echte Bilddaten enthält.
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 nach, welche Kombinationen aus Auflösung und Bildrate unterstützt werden.
Voraussetzungen
Diese Befehle erfordern einen Linux-Computer mit installierten Toolsv4l-utils, GStreamer und FFmpeg:
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) |
YUYV als YUY2 geschrieben.
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./dev/video4 der zu verwendende Knoten. Ersetzen Sie ihn in den folgenden Befehlen durch Ihren eigenen Knoten.
Schritt 2 – Ein einzelnes RAW-Bild aufnehmen
Verwenden Siev4l2-ctl, um einen unkomprimierten YUYV-Frame in voller Auflösung aufzunehmen:
frame_1600x1200.yuyv geschrieben.
Framegröße überprüfen
Ein vollständiger Rohframe sollte exaktBreite × Höhe × 2 Byte groß sein:
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:Monochrom-Modelle der stellarHD
Aufgrund einer UVC-Eigenheit gibt die monochrome stellarHD ihre Ausgabe alsYUYV 4:2:2 an, obwohl der Sensor keine Farbinformationen besitzt.
- Nur der Kanal
Y(Luminanz) enthält das echte Bild. - Die Kanäle
UundV(Chroma) sind Dummy-/feste Werte und können ignoriert werden.
Bestätigen, dass die Kamera tatsächlich monochrom ist
Spielen Sie die Rohdatei direkt mitffplay ab. Wenn das Bild von Natur aus in Graustufen erscheint, sind die Chromakanäle konstant:
GStreamer-Pipelines
Den Live-Rohstream anzeigen
Einen Rohframe auf Festplatte speichern
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: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.
OpenCV-Anleitung
Siehe unsere vollständige Anleitung zur Verwendung der stellarHD mit OpenCV.
Fehlerbehebung
Die Ausgabedatei hat die falsche Größe
Ein vollständiger Rohframe ist exaktBreite × 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.