W ten sposób utworzyłem tablicę:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
Chcę to zrobić, aby wyświetlić pojedynczą czerwoną kropkę na środku obrazu 512x512. (Przynajmniej na początek ... Myślę, że mogę dowiedzieć się reszty stamtąd)
Odpowiedzi:
Możesz użyć PIL do utworzenia (i wyświetlenia) obrazu:
źródło
(w,h,3)
, ale tak powinno być(h,w,3)
, ponieważ indeksowanie w PIL różni się od indeksowania w numpy. Powiązane pytanie: stackoverflow.com/questions/33725237/…(h,w,3)
. (Teraz jest to ustalone powyżej). Długość pierwszej osi może być traktowana jako liczba wierszy w tablicy, a długość drugiej osi - liczba kolumn.(h, w)
Odpowiada więc tablicy „wysokość”h
i „szerokość”w
.Image.fromarray
konwertuje tę tablicę na obraz wysokościh
i szerokościw
.img.show()
nie działają w notatniku ipython.img_pil = Image.fromarray(img, 'RGB') display(img_pil.resize((256,256), PIL.Image.LANCZOS))
Następujące powinny działać:
Jeśli używasz notesu / laboratorium Jupyter, użyj tego polecenia inline przed importowaniem matplotlib:
źródło
plt.gray()
jednorazowe wywołanie kodu, aby przełączyć wszystkie kolejne wykresy na skalę szarości. Nie tego, czego chce OP, ale mimo to dobrze wiedzieć.squeeze()
do wyeliminowania trzeciego wymiaru:plt.imshow(data.squeeze())
Najkrótszą ścieżką jest użycie
scipy
:Wymaga to również zainstalowania PIL lub Pillow.
Podobne podejście wymagające również PIL lub Pillow, ale które może wywołać innego widza :
źródło
scipy.misc.imshow(data)
.toimage
został przestarzały w scipy-1.0.0 i usunięty w 1.2.0 na korzyść Pillow'sImage.fromarray
.Korzystając z pygame , możesz otworzyć okno, uzyskać powierzchnię jako układ pikseli i manipulować stamtąd, jak chcesz. Musisz jednak skopiować tablicę numpy do tablicy powierzchni, co będzie znacznie wolniejsze niż wykonywanie rzeczywistych operacji graficznych na samych powierzchniach gry.
źródło
Jak wyświetlać obrazy zapisane w tablicy numpy na przykładzie (działa w notatniku Jupyter)
Wiem, że są prostsze odpowiedzi, ale ta pozwoli ci zrozumieć, w jaki sposób obrazy są faktycznie topione z tablicy numpy.
Załaduj przykład
Wyświetl tablicę jednego obrazu
Utwórz puste 10 x 10 podplotów w celu wizualizacji 100 zdjęć
Rysowanie 100 zdjęć
Wynik:
Co ma
axes.flat
zrobić? Tworzy moduł wyliczający numpy, dzięki czemu można iterować po osi w celu rysowania na nich obiektów. Przykład:źródło
Korzystając z tablicy poduszek, na przykład:
źródło
Python Imaging Library może wyświetlać obrazy przy użyciu tablic numpy. Spójrz na tę stronę, aby zobaczyć przykładowy kod:
EDYCJA: Jak mówi uwaga na dole tej strony, powinieneś sprawdzić najnowsze informacje o wydaniu, które znacznie upraszczają:
http://effbot.org/zone/pil-changes-116.htm
źródło
Dodatek za zrobienie tego z matplotlib. Uznałem, że jest to przydatne przy wykonywaniu zadań związanych z wizją komputera. Powiedzmy, że masz dane z dtype = int32
źródło