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
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, topygame.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.
Dzięki, to się udało. –