Forum: Mikrocontroller und Digitale Elektronik Bilddatei in Array schreiben/speicher


von Yogenlos123 (Gast)


Lesenswert?

Guten Morgen liebe Leute von heute,

ich würde sehr gerne eine Bilddatei (.bmp/.jpg) an einem Grafikdisplay 
anzeigen lassen.
Dazu möchte ich das Bild in ein Array einlesen und mithilfe des Arrays 
dann dem Display übergeben.
Die Ansteuerung zum Display ergibt keine Probleme, jedoch weiss ich 
nicht genau wie man ein Bitmap in ein Array schreiben bzw. umwandeln 
kann.

Hätte jemand eventuell ein Tutorial bzw. einen Beispielcode wie man das 
Bitmap umwandlen könnte? Gegebenfalls würde auch ein Online-Converter 
funktionieren.

Habe bereits auf Google gesucht, jedoch nichts brauchbares gefunden :/
Mit freundlichen Grüssen

PS: arbeite mit C++(Anfänger), habe jedoch schon Erfahrung in der C 
sowie Assemblerprogrammierung.

von Horst (Gast)


Lesenswert?

Das Bild soll aber schon offline konvertiert werden, und dann erst in 
den Mikrocontroller?

Was spricht dann gegen eine einfache Skriptsprache (Matlab/octave oder 
python), die dir einfach eine c-Datei mit dem benötigten Array erzeugt?
Das Bildeinlesen ist da ein Einzeiler jeweils

von Draco (Gast)


Lesenswert?

Was hast du denn für einen µC? Und Display?

von Yogenlos123 (Gast)


Lesenswert?

Horst schrieb:
> Was spricht dann gegen eine einfache Skriptsprache (Matlab/octave oder
> python)

Skriptsprache? Tut mir leid wenn ich noch sehr wenig Ahnung davon habe, 
bin noch in der Ausbildung.

Also das Endprodukt wäre, dass ich mit einem Kameramodul ein Foto mache, 
dieses dem uP übergebe und anschliessend an einem Display anzeigen 
werde.

Ich habe bereits ein Foto auf dem Display angezeigt, jedoch habe ich 
dafür einen Bitmap--> Array converter verwendet und diese "Tabelle" 
einfach in den Code eingefügt.
Ich möchte aber diese Umwandlung direkt im uP vornehmen.

Danke schon mal für die raschen Antworten


uP STM32
Display NHD_2.4_240320

von Draco (Gast)


Lesenswert?

Also ist das dein Thread: Beitrag "Bild an TFT Display anzeigen"


Wie kommt denn dein Bild in den STM? Wenn es ja gesendet wurde, empfängt 
er es über UART? Weil das BMP muss ja erstmal irgendwo 
"zwischengespeichert" werden - damit du es in ein Array umwandeln 
kannst.

Hier gibt es eine gute Quelle für Infos:
http://paulbourke.net/dataformats/bmp/

von Horst (Gast)


Lesenswert?

Kommt dann wohl auf das Kameramodul an. Normal kommt da aber raw heraus 
und nichts jpg-mäßiges.

von Yogenlos123 (Gast)


Lesenswert?

Draco schrieb:
> Also ist das dein Thread: Beitrag "Bild an TFT Display anzeigen"

Nein

Draco schrieb:
> Wenn es ja gesendet wurde, empfängt er es über UART?

Ja genau

Draco schrieb:
> Hier gibt es eine gute Quelle für Infos:
> http://paulbourke.net/dataformats/bmp/

Oke danke, werd mir das mal durchlesen und gegebenfalls noch fragen 
stellen, falls dann noch welche offen sind

Horst schrieb:
> Kommt dann wohl auf das Kameramodul an. Normal kommt da aber raw heraus
> und nichts jpg-mäßiges.

Oke, ich habe leider nichts gefunden von raw bzw. jpg. Hier ist das 
Datasheet: 
https://cdn-shop.adafruit.com/product-files/1386/1386+v2+datasheet.pdf

von Dominik R. (vision)


Lesenswert?

Da es einen build in jpeg codec hat, gehe ich stark davon aus, dass es 
die Bilder als Jpeg übergibt. Hab mir aber nur die erste Seite 
angeguckt.

von Gästchen (Gast)


Lesenswert?

Hi, ich bin hier fündig geworden:

http://www.holger-klabunde.de/demos/demos.htm

Da gibts das praktische bmp2C.

Das ist ein Kommandozeilentool. Bilder kommen als Bitmap rein, es fällt 
ein C- und ein h-file für den AVR raus.
Da ich einen PIC verwende, hab ich mir die Anzeigefunktion selber 
geschrieben. Das sind nur wenige Zeilen.

Wenn es nur so einfach wäre, hübsche Icons selber zu zeichnen, wie sie 
anzuzeigen. Meine sehen aus, als hätte sie ein 4-Jähriges Kind 
gezeichnet...

von Dominik R. (vision)


Lesenswert?

So wie ich das verstanden habe, soll die Konvertierung direkt im uC 
stattfinden. Wenn dein Kameramodul also Jpeg ausgibt, wirst du um eine 
Jpeg Library nicht herum kommen.
Wie sieht es denn mit der Auflösung aus? Gibt die Kamera genau die 
Auflösung aus, die dein Display hat oder musst du das Jpeg noch 
verkleinern?

von Yogenlos123 (Gast)


Lesenswert?

Dominik R. schrieb:
> So wie ich das verstanden habe, soll die Konvertierung direkt im
> uC
> stattfinden. Wenn dein Kameramodul also Jpeg ausgibt, wirst du um eine
> Jpeg Library nicht herum kommen.
> Wie sieht es denn mit der Auflösung aus? Gibt die Kamera genau die
> Auflösung aus, die dein Display hat oder musst du das Jpeg noch
> verkleinern?


Oke vielen Dank schon mal,
Auflösung der Kamera 640x480
Display jedoch nur 320x240 --> das Bild muss dann noch verkleienrt 
werden..

Weiss jemand ob ich dies direkt in der initialisierung der Kamera 
vornehmen kann?

Mfg

von Dominik R. (vision)


Lesenswert?

Im Datenblatt steht der Befehl, um die Auflösung herunter zu stellen 
(Seite 4 unten). Hast du dir das Datenblatt schon einmal angesehen?

von Draco (Gast)


Lesenswert?

Yogenlos123 schrieb:
> Draco schrieb:
>> Also ist das dein Thread: Beitrag "Bild an TFT Display anzeigen"
>
> Nein

Also, veralbern braucht man hier nicht, ich fasse mal zusammen:

- Gleicher µC
- Gleiches Display
- Gleiches Problem (JPEG)
- Gleiches Problem (Ausgabe)
- Gleiche Randbedingungen (Bild senden, empfangen)
- Beide Displays bereits initialsiert
- Beide bekommen es nicht aufs Display
- Beide Lehrlinge

Das sind schon seeeeehr viele Gemeinsamkeiten für einen Tag unterschied! 
;-)

Hier ist mal ne gute Seite zu Infos und Verarbeitung von JPEGs: 
http://www.impulseadventure.com/photo/jpeg-huffman-coding.html

Um was beizutragen, hier ist ein JPEG Decompressor, musst du mal schauen 
wie die das gemacht haben: http://www.ijg.org/files/

von Horst (Gast)


Lesenswert?

Du wirst mit dieser Kamera auf jeden Fall JPEG dekodieren müssen. Viel 
Spaß!
An allem was du bisher hier von dir gegeben hast, scheint die Aufgabe 
für dich 3 Stufen zu hoch zu sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.