Karena itu saya telah membuat array:
import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
Yang ingin saya lakukan adalah menampilkan satu titik merah di tengah gambar 512x512. (Setidaknya untuk memulai dengan ... Saya pikir saya bisa mencari tahu sisanya dari sana)
Jawaban:
Anda dapat menggunakan PIL untuk membuat (dan menampilkan) gambar:
sumber
(w,h,3)
, tetapi seharusnya(h,w,3)
, karena pengindeksan di PIL berbeda dari pengindeksan di numpy. Ada pertanyaan terkait: stackoverflow.com/questions/33725237/…(h,w,3)
. (Sekarang sudah diperbaiki, di atas.) Panjang sumbu pertama dapat dianggap sebagai jumlah baris dalam array, dan panjang sumbu kedua, jumlah kolom. Jadi(h, w)
sesuai dengan array "tinggi"h
dan "lebar"w
.Image.fromarray
mengubah susunan ini menjadi gambar dengan tinggih
dan lebarw
.img.show()
tidak berfungsi di notebook ipython.img_pil = Image.fromarray(img, 'RGB') display(img_pil.resize((256,256), PIL.Image.LANCZOS))
Berikut ini harus bekerja:
Jika Anda menggunakan notebook / lab Jupyter, gunakan perintah inline ini sebelum mengimpor matplotlib:
sumber
plt.gray()
sekali dalam kode Anda untuk mengalihkan semua grafik berikut ke skala abu-abu. Bukan apa yang diinginkan OP tapi bagus untuk diketahui.squeeze()
untuk menghilangkan dimensi ketiga:plt.imshow(data.squeeze())
Jalur terpendek adalah untuk digunakan
scipy
, seperti ini:Ini membutuhkan PIL atau Bantal untuk dipasang juga.
Pendekatan serupa juga membutuhkan PIL atau Bantal tetapi yang dapat meminta pengunjung yang berbeda adalah:
sumber
scipy.misc.imshow(data)
.toimage
sudah ditinggalkan di scipy-1.0.0 dan dihapus di 1.2.0, mendukung PillowImage.fromarray
.Menggunakan pygame , Anda dapat membuka jendela, mendapatkan permukaan sebagai array piksel, dan memanipulasi seperti yang Anda inginkan dari sana. Anda harus menyalin array numpy Anda ke array permukaan, yang akan jauh lebih lambat daripada melakukan operasi grafis yang sebenarnya pada permukaan pygame sendiri.
sumber
Bagaimana menampilkan gambar yang disimpan dalam array numpy dengan contoh (berfungsi di notebook Jupyter)
Saya tahu ada jawaban yang lebih sederhana tetapi yang ini akan memberi Anda pemahaman tentang bagaimana gambar benar-benar tenggelam dari array numpy.
Muat contoh
Tampilan array dari satu gambar
Buat kosong 10 x 10 subplot untuk memvisualisasikan 100 gambar
Merencanakan 100 gambar
Hasil:
Apa yang
axes.flat
harus dilakukan Itu menciptakan enumerator numpy sehingga Anda dapat beralih pada poros untuk menggambar objek pada mereka. Contoh:sumber
Menggunakan bantal dariarray, misalnya:
sumber
The Python Imaging Library dapat menampilkan gambar menggunakan Numpy array. Lihatlah halaman ini untuk kode sampel:
EDIT: Seperti catatan di bagian bawah halaman mengatakan, Anda harus memeriksa catatan rilis terbaru yang membuatnya lebih sederhana:
http://effbot.org/zone/pil-changes-116.htm
sumber
Tambahan untuk melakukannya dengan matplotlib. Saya merasa berguna melakukan tugas visi komputer. Katakanlah Anda mendapat data dengan dtype = int32
sumber