Skocz do zawartości

PIC32 OLED generowanie bitmapy


adi1525

Pomocna odpowiedź

Witam, mam funkcję:

ssd1331_draw_bitmap(0,0,bitmapa,10,10,BLACK);

która po podaniu tablicy "bitmapa" wygenerowanej wcześniej z obrazka wyświetla mi obraz o kolorze, który podam.

Chciałbym odczytać kolory z obrazu kolorowego. Znalazłem funkcję która odczytuje mi obraz 24 bitowy .bmp z karty SD.

Zastanawia mnie jak zapisać obraz typu .jpg albo .bmp jako tablice hex, ponieważ chce zdj wgrywać do pamięć bez użycia karty SD.

Da się to jakoś zrobić lub w inny sposób odczytać kolory poszczególnych pikseli z obrazu ?

Link do komentarza
Share on other sites

A w jakiej postaci ta funkcja, którą znalazłeś, zwraca ci ten odczytany obraz?

[ Dodano: 07-03-2017, 17:07 ]

Osobiście używam do takich rzeczy Pythona i PyGame -- bo akurat to znam i się przyzwyczaiłem. Ale możesz napisać taki program w zasadzie w dowolnym języku.

Przykład programu, który użyłem do wygenerowania obrazka:

import pygame
import struct

def colors():
   image = pygame.image.load("micropython-color.png")
   for y in range(64):
       for x in range(64):
           r, g, b, a = image.get_at((x, y))
           c = (r & 0xf8) << 8 | (g & 0xfc) << 3 | b >> 3
           yield struct.pack('>H', c)

print repr("".join(colors()))
Link do komentarza
Share on other sites

Tutaj jest funkcja odczytu koloru z obrazu i zapisie do bmpFile i następnie zapis kolorów do wysłania bez część, w której odczytuje się rozmiar, szerokość, wysokość itp.

for (col=0; col<w; col++) { // For each pixel...
           // Time to read more pixel data?
           if (buffidx >= sizeof(sdbuffer)) { // Indeed
             bmpFile.read(sdbuffer, sizeof(sdbuffer));
             buffidx = 0; // Set index to beginning
           }

           // Convert pixel from BMP to TFT format, push to display
           b = sdbuffer[buffidx++];
           g = sdbuffer[buffidx++];
           r = sdbuffer[buffidx++];

           //tft.drawPixel(x+col, y+row, tft.Color565(r,g,b));
           // optimized!
           tft.pushColor(tft.Color565(r,g,b));
         } // end pixel
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

No to samo wysyłanie danego koloru rozumiem, tylko nie wiem jak ten obraz.bmp dodać, czy po prostu jak bibliotekę i nie bawić się w tworzenie tablicy z hex'ami czy jak?

Link do komentarza
Share on other sites

Wygenerowałem obraz w gimp do .c i nie mam pojęcia co dalej 😅 , co to za format jest?

mam linijkę

pixel_data[96 * 64 * 3 + 1];
"\235\236$\221\223\015\251\257\063\257\265HHF*\032\033\022\035\036\023\040\037\023&&"
 "\023&$\024\"\035\024\040\033\023$\037\023,'\023-*\023)&\023/,\023A=\024QL:WPTZQYZRZ[T^"
 "]Ub_Ve`Xh]VfQML;?\040$*\022\040\"\023##\022&$\023))\023\067\067\027<:\036\062\060\025$"
 "\040\023\037\033\023&%\022@?\030TQ\063][F[[EFM\035\063>\022\060\065\023++\022.,\023\064\063"
 "\023;\065\022A:\023F?\023PH\022aY&hl\035fu\022es\022hp\022{v\023\226\202\022\241\215"
 "\023\250\223\022\256\231\022\262\236\022\263\240\022\267\242\023\270\242\023\272"
 "\243\023\270\241\022\275\250\023\304\260\022\307\265\022\314\275\022\321\302\023"
 "\316\274\022\306\272\023\305\274\022\314\302\023\321\311\023\324\317\022\325\317"
 "\022\325\321\023\324\321\027\327\321\022\336\326!\253\254L\064\066\024\066\063\031"
 "BB.NPIXZo]e\226bl\272cs\326r\204\353\226\227\023\213\213\000\236\242\023\257......"
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.