Ich möchte ein Bild in CIF größe auf ein 512 kb großes SRAM speichern. Wie geht das? Beispiel in C?
1 | uint8_t pixels[352*288*3]; |
2 | memcpy(pixels, bilddaten, sizeof(pixels)); |
? Im SRAM ist nachher sogar noch Platz frei.
Ich möchte das Bild vorher noch komprimieren und so viele Bilder drauf bekommen wie es nur geht. Eine weitere Frage wäre noch im Datenblatt vom Sensor steht 8bit YUV heißt das dann nicht 352*288*1?
was ich vergessen habe, ich brauche noch eine kleine Datenbank der Bilder mit -zu welcher Zeit- -bild nummer-
Ibo de Souza schrieb: > was ich vergessen habe, ich brauche noch eine kleine Datenbank der > Bilder mit -zu welcher Zeit- -bild nummer- Wenn's mehr nicht ist...
Also, "Teile und Hersche". Zuerst: Entscheide dich für eine Komprimierung (libjpeg?). Schau in welchem Pixelformat diese ihre Eingabedaten erwartet. Implementiere das Laden der Kameradaten, evtl. Farbraum-Wechsel, das übergeben an die komprimierungs-Funktion. Jetzt hast du einen Blob mit komprimierten Bilddaten. Den zusammen mit Erstellungdatum, Bildnummer etc. ins SRAM ("verkettete Liste"?) Datenbank ist overkill, da SRAM "Random Access Memory" ist, und du mit linearer Suche deine handvoll Bilder auch gleich durch hast.
Ibo de Souza schrieb: > Ich möchte das Bild vorher noch komprimieren und so viele Bilder drauf > bekommen wie es nur geht. Eine weitere Frage wäre noch im Datenblatt vom > Sensor steht 8bit YUV heißt das dann nicht 352*288*1? Nein YUV 8 Bit bedeutet, dass Y, U und V jeweils mit 8-Bit Farbauflösung gespeichert werden. Je nach Subsampling werden U und V aber mit geringerer (Bild)Auflösung gespeichert, z.B mit halber horizontalen Auflösung (4:2:2) oder halber vertikalen und horizontalen Auflösung (4:2:0)
Ok ich nehme das Bild und komprimiere... Speichern auf dem SRAM mit datum name nummer? wie geht es codemäßig? wie muss es aussehen... so gut ich weiss ist es nicht sooo leicht...
Moin, kanns Du nicht ein paar mehr Infos geben? Was für ein System wird verwendet, wie ist der Speicher angebunden...... MfG
Du sagst nicht hallo, du sagst nicht danke, nach jeder Anwort kommen mehr Fragen und Anforderungen ... Lies mal die Netiquette und denke mal über dein Verhalten hier nach!
Ibo de Souza schrieb: > Speichern auf dem SRAM mit datum name nummer? du speicherst pro Bild einmal
1 | struct Bild { |
2 | time_t datum; |
3 | char name[12]; // 8.3; |
4 | int nummer; |
5 | size_t binaerdatengroesse; |
6 | }
|
. Danach die Komprimierten Binärdaten. Zum Auslesen/Suchen eines Bildes: Setze Leseposition auf Speicherstelle 0: while not found: struct Bild auslesen. Check ob Name/Nummer/... passt. Wenn nein: Leseposition um sizeof(struct Bild) + binaerdatengroesse weiterverschieben.. done d.H. du hast im SRAM eine kette von Bild-Structs, dazwischen immer die Komprimierten Daten. Das Ende der Kette kannst du z.B. durch eine Struct Bild mit binaerdatengroesse==0 markieren.
Hallo zusammen, vielen dank für die guten antworten. Besonders an Ernst. Mit freundlichen Grüßen
Εrnst B✶ schrieb: > char name[12]; // 8.3; Dann bitte char name[13]; nehmen 8+3+1(Punkt)+1(Stringende)=13
Wozu den Punkt speichern wenn man eh die feste Länge hat? Die ersten acht Zeichen sind der Teil vor dem Punkt, dann folgt implizit der Punkt, und danach die drei Zeichen sind dann nach dem Punkt. Da kriegt der Bgriff "Festpunktarithmetik" doch gleich eine vollkommen neue Bedeutung. ;-)
Eike S. schrieb: > Wozu den Punkt speichern wenn man eh die feste Länge hat? Weil es bei 10 Bildern auf die 10 Bytes auch nicht mehr ankommt und die Verarbeitung der Namen dann simpler ist, wenn man nicht erst mal die gelesenen Bytes herumwirbeln muss. Ob er den Punkt speichert oder nicht, ist auch schon egal. Deswegen kriegt er auch nicht mehr Bilder in den Speicher.
Karl Heinz Buchegger schrieb: > Ob er den Punkt speichert oder nicht, ist auch schon egal. Deswegen > kriegt er auch nicht mehr Bilder in den Speicher. Eben. Es ist genauso richtog oder falsch ihn zu speichern oder zu vergessen. Ich wollte nur ein Argument gegen das "du mußt das aber so machen" bringen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.