wie konvertieren von 16-bit-RGB-Framebuffer zu einer sichtbaren format?
Arbeite ich mit fremden code auf einem Gerät, welches ein Bild zu /dev/fb/0
und zeigen, bis auf video-out oder senden Sie es über das Netzwerk zu einem client-Anwendung.
Ich habe keinen Zugriff auf den alten Quellcode für die client-app, aber ich weiß Folgendes über die Daten:
- 720x480
- 16-bit -
- RGB (ich bin nicht sicher, ob es 5,5,5 oder 5,6,5)
- RAW (keine Header auch immer)
cat
-können/dev/fb/0
- 675kb
Wie kann ich einen header oder konvertieren Sie Sie in JPEG -, BMP-oder RAW-Typ, die konnte ich dann sehen in einer desktop-Anwendung?
Letztlich will ich, dass es das jpeg-Format sein und die Anzeige in einem browser, aber alles, was ich sehe mit meinen Augen funktioniert jetzt.
Erfolg
(siehe die Kommentare unten)
ffmpeg \
-vcodec rawvideo \
-f rawvideo \
-pix_fmt rgb565 \
-s 720x480 \
-i in-buffer.raw \
\
-f image2 \
-vcodec mjpeg \
out-buffer.jpg
- github.com/coolaj86/image-examples
- Bild-Beispiele/scripts/rgbtools-torgb
- Bild-Beispiele/scripts/rgbtools-fromrgb
Fehlversuche
Zeigt das Bild drei mal quer fast ohne Farbe, und zerquetschte vertikal:
rawtoppm -rgb -interpixel 720 480 fb.raw > fb.ppm
Zeigt das Bild aber mit Streifen und vertikal gequetscht und bad Farbe:
rawtoppm -rgb -interrow 720 480 fb.raw > fb.ppm
Ähnlich wie die oben
convert -depth 16 -size 720x480 frame_buffer.rgb fb.jpeg
Ich war in der Lage zu tun, meine eigene Art von motion-jpeg. Die Skripte, die ich verwendet, während grübeln diese alle sind hier verfügbar: github.com/coolaj86/image-examples
Hallo, vielen Dank für Ihre Antwort und Hilfe.. Auch wenn ich versuche mich zu Holen framebuffer-Daten für HD-Gerät, es gibt mir die 32-bit-Tiefe, raw-Daten, also wie kann ich es konvertieren, um entsprechende Bild, so kann ich ihn anzeigen?
Werfen Sie einen Blick auf diese beiden: github.com/coolaj86/image-examples/blob/master/scripts/... github.com/coolaj86/image-examples/blob/master/scripts/..., Wenn Sie herausfinden können, was ffmpeg aufruft, Sie können Sie entsprechend anpassen
Es könnte wie folgt Aussehen:
ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 2073600 -i data.raw -f image2 -vcodec mjpeg frame.jpeg
InformationsquelleAutor CoolAJ86 | 2010-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
rgb /ppm: Einfach abschmecken!
bleibt bei https://github.com/coolaj86/image-examples
InformationsquelleAutor CoolAJ86
Ich bin der Entwicklung eines embedded-Systems mit einem 5:6:5 RGB-format und der Gelegenheit, die ich brauchte, um zu erfassen raw framebuffer-Daten und wandelt es in ein sichtbares Bild. Für Experimente habe ich ein bisschen C-code konvertieren der raw-binary-Werte zu link-text. Das format ist dumm, aber leicht lesbar - so fand ich es bequem für Hacker zu. Dann habe ich Imagemagick display anzeigen und konvertieren zu konvertieren, zu JPG. (Wenn ich mich Recht erinnere, konvertieren akzeptieren raw-Binär-Bilder - aber das setzt Voraus, Sie wissen alle Bild-Parameter, d.h. 5:6:5 gegenüber 5:5:5).
Kann ich nach Beispiel-C-code zu konvertieren 5:6:5: 8:8:8 RGB, wenn nötig.
for (size_t i=0;i<num_pixels;i++) { fread(&pixel", sizeof(unsigned short), 1, infile); rot = (unsigned short)((pixel & 0xF800) >> 11); grün = (unsigned short)((pixel & 0x07E0) >> 5); blau = (unsigned short)(pixel - & 0x001F); // Erhöhung der Intensität rot = rot << 3; green = green << 2; blau = blau << 3; fprintf(outfile, "%d %d %d\n", red, green, blue); }
Mist - ich vergaß, dass Kommentare nicht formatiert werden kann. Der obige code setzt die 565 pixel. Dieses snippet liest ein pixel aus einer binären Datei, trennt die pixel-Werte in RGB-Komponenten, skaliert Sie entsprechend, dann schreibt Sie als text.
Weißt du, wie ich angeben, rgb 5:6:5 mit konvertieren?
InformationsquelleAutor Throwback1986