2012-10-18 26 views
5

Jak przekonwertować obiekt powierzchniowy w pygame na dwuwymiarową tablicę wartości RGB (jedna wartość dla każdego piksela)? Przeczytałem dokumentację dotyczącą PixelArrays i Surfarrays i nie mogę znaleźć odpowiedzi na moje pytanie. Przykłady są bardziej niż mile widziane.Konwersja obrazu w pygame na tablicę 2D wartości RGB

Odpowiedz

8

pygame documentation mówi, że dany obiekt powierzchni, można utworzyć PixelArray opakowanie, aby zapewnić bezpośredni 2D dostęp tablicy na jej pikseli poprzez wywołanie modułu PixelArray() metody takie jak to:

pxarray = pygame.PixelArray(surface) 

Logicznie się PixelArray Obiekt to dwuwymiarowa tablica wartości RGB przechowywanych jako liczby całkowite.

PixelArray element piksel może być przypisany surowej wartości całkowite, to pygame.Color przykład (obiektem dla koloru reprezentacji) lub (r, g, b[, a]) krotki.

pxarray[x, y] = 0xFF00FF 
pxarray[x, y] = pygame.Color(255, 0, 255) 
pxarray[x, y] = (255, 0, 255) 

Wspomina również:

Jednak wartość całkowita tylko piksela jest zwracana. Aby porównać piksel z określonym kolorem, należy najpierw odwzorować ten kolor za pomocą metody obiektu Surface.map_rgb() , dla której utworzono obiekt .

co oznacza, że ​​trzeba użyć metody Surface.map_rgb() dostać krotki RGB z PixelArray wartości całkowitych, gdy nie robisz zadanie do tablicy, to znaczy kiedy czytanie wartość piksela, jak to się robi w następujących warunkowy:

# Check, if the first pixel at the topleft corner is blue
if pxarray[0, 0] == surface.map_rgb((0, 0, 255)):
        ...

Mam nadzieję, że to pomoże.

+0

Dzięki, to się udało. –