comment faire pour convertir RVB 16 bits de mémoire Tampon d'Image à un format permettant l'affichage?
Je travaille avec quelqu'un d'autre code sur un dispositif qui peut mettre une image pour /dev/fb/0
et de montrer sur la vidéo ou l'envoyer sur le réseau d'une application cliente.
Je n'ai pas accès à la vieille source de l'application cliente, mais je sais suivantes sur les données:
- 720x480
- 16 bits
- RGB (je ne suis pas sûr si c'est 5,5,5 ou 5,6,5)
- RAW (pas d'en-têtes que ce soit)
cat
-mesure de/dev/fb/0
- 675kb
Comment puis-je donner ce un en-tête ou le convertir en JPEG, BMP, ou RAW d'un type que je pourrais ensuite afficher dans une application de bureau?
En fin de compte, je veux qu'il soit jpeg et visible dans un navigateur, mais tout ce que je peux voir de mes yeux le travail pour le moment.
Succès
(voir les commentaires ci-dessous)
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
- image-exemples/scripts/rgbtools-torgb
- image-exemples/scripts/rgbtools-fromrgb
L'Échec Des Tentatives De
Montre l'image trois fois le sens de la largeur avec presque pas de couleur, et écrasé à la verticale:
rawtoppm -rgb -interpixel 720 480 fb.raw > fb.ppm
Montre l'image, mais avec des stries et écrasé à la verticale et de la mauvaise couleur:
rawtoppm -rgb -interrow 720 480 fb.raw > fb.ppm
Semblables à celles de la
convert -depth 16 -size 720x480 frame_buffer.rgb fb.jpeg
J'ai été capable de faire mon propre genre de motion jpeg. Les scripts que j'ai utilisé tout en essayant de tous sont disponibles ici: github.com/coolaj86/image-examples
Salut, Merci pour votre réponse et votre aide.. Aussi quand je suis en train de chercher le framebuffer de données pour appareil HD, il me donne de 32 profondeur de bits de données brutes alors, comment puis-je convertir image appropriée afin que je puisse l'afficher?
Jetez un oeil à ces deux: github.com/coolaj86/image-examples/blob/master/scripts/... github.com/coolaj86/image-examples/blob/master/scripts/... Si vous pouvez trouver ce que ffmpeg appels, vous pouvez ajuster en conséquence
Il pourrait ressembler à quelque chose comme ceci:
ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 2073600 -i data.raw -f image2 -vcodec mjpeg frame.jpeg
OriginalL'auteur CoolAJ86 | 2010-09-23
Vous devez vous connecter pour publier un commentaire.
rvb en ppm: il suffit de saison à déguster!
maintenu à https://github.com/coolaj86/image-examples
OriginalL'auteur CoolAJ86
Je suis de développer un système embarqué avec un 5:6:5 format RGB, et à l'occasion, j'ai eu besoin de la capture raw framebuffer des données et à la convertir en une image visible. Pour l'expérimentation, j'ai écrit un peu de code C pour convertir les raw des valeurs binaires à texte du lien. Le format est idiot, mais facilement lisible ainsi, je trouve qu'il est pratique pour le piratage sur. J'ai ensuite utilisé Imagemagick affichage à vue et convertir de convertir des fichiers JPG. (Si je me souviens bien, convertir acceptera les premières images binaires mais cela suppose que vous connaissez tous les paramètres de l'image, c'est à dire 5:6:5 contre 5:5:5).
Je peux poster exemple de code C pour convertir 5:6:5 à 8:8:8 RVB si nécessaire.
for (size_t i=0;i<num_pixels;i++) { fread(&pixel, sizeof(unsigned short), 1, infile); rouge = (unsigned short)((pixel & 0xF800) >> 11); vert = (unsigned short)((pixel & 0x07E0) >> 5); bleu = (unsigned short)(pixel & 0x001F); // Augmentation de l'intensité en rouge = rouge << 3; vert = vert << 2; bleu = bleu << 3; fprintf(outfile, "%d %d %d\n", rouge, vert, bleu); }
Déception - j'ai oublié que les commentaires ne peuvent pas être formatés. Le code ci-dessus suppose un 565 pixels. Cet extrait se lit d'un pixel à partir d'un fichier binaire, sépare les valeurs des pixels dans les composantes RGB, les échelles de façon appropriée, puis les écrit comme du texte.
Savez-vous comment je précise rvb:5 6:5 avec convertir?
OriginalL'auteur Throwback1986