Tampilkan gambar dengan Python

99

Saya mencoba menggunakan IPython.display dengan kode berikut:

from IPython.display import display, Image
display(Image(filename='MyImage.png'))

Saya juga mencoba menggunakan matplotlib dengan kode berikut:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
plt.imshow(mpimg.imread('MyImage.png'))

Dalam kedua kasus tersebut, tidak ada yang ditampilkan, bahkan tidak ada pesan kesalahan.

FiReTiTi
sumber

Jawaban:

189

Jika Anda menggunakan matplotlib dan ingin menampilkan gambar di buku catatan interaktif Anda, coba hal berikut ini:

%pylab inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('your_image.png')
imgplot = plt.imshow(img)
plt.show()
Joe Bathelt
sumber
Terima kasih atas jawaban Anda, ini hampir berhasil :-) Gambar ditampilkan, tetapi level abu-abu diganti menggunakan api lut. Ada ide?
FiReTiTi
2
Coba definisikan peta warna secara eksplisit: plt.imshow (lum_img, cmap = "grey")
Joe Bathelt
3
Dalam pemahaman saya, perintah plt.show () terakhir menghasilkan tampilan. Sebelum itu, Anda bisa menambahkan plot, misalnya dengan menambahkan layer ke gambar. Saya merekomendasikan tutorial gambar matplotlib sebagai referensi: matplotlib.org/users/image_tutorial.html
Joe Bathelt
5
Terima kasih atas jawaban Anda, sekarang berfungsi dengan sempurna! Hanya sedikit detail untuk calon pembaca, itu "abu-abu" bukan "abu-abu".
FiReTiTi
Tidak, Gray adalah ejaan yang benar dan asli. Gray telah diadopsi dalam beberapa penyimpangan bahasa Inggris sehingga lebih umum di negara-negara seperti Amerika Serikat.
perfo
37

Jika Anda menggunakan matplotlib, Anda perlu menampilkan gambar menggunakan plt.show()kecuali Anda tidak dalam mode interaktif. Misalnya:

plt.figure()
plt.imshow(sample_image) 
plt.show()  # display it
MaxPowers
sumber
Membaca jawaban lain, saya baru saja mendapatkan bahwa saya harus menambahkan plt.show () setelah kode yang sudah saya miliki, alih-alih mengganti imshow. Terima kasih atas bantuan Anda.
FiReTiTi
Saya pikir ini menjawab pertanyaan dengan tepat dibandingkan dengan jawaban yang diterima.
Prasad Raghavendra
19

Dengan cara yang lebih sederhana, Anda dapat melakukan hal yang sama dengan menggunakan

from PIL import Image

image = Image.open('image.jpg')
image.show()
the_unknown_spirit
sumber
1
Terima kasih untuk bantuannya. Saya telah menginstal PIL dan sekarang berfungsi. Tahu mengapa kedua metode yang saya coba tidak berhasil?
FiReTiTi
Jika gagal menginstal PIL (seperti yang terjadi pada saya), coba Pillow, itu bekerja seperti pesona bagi saya.
mrk
1
Saya bertanya-tanya bagaimana import Imagepernyataan itu bekerja; bukankah seharusnya begitu from PIL import Image?
Laszlo Treszkai
Solusi ini tidak selalu menutup deskriptor file. Sebaliknya, gunakan dengan pengelola konteks:with Image.open('image.jpg') as im: im.show()
Laszlo Treszkai
Apa Imagepaket ini ?
Louis Yang
10

Ini berhasil untuk saya, Terinspirasi oleh @the_unknown_spirit

from PIL import Image
image = Image.open('test.png')
image.show()
Punnerud
sumber
5

Menggunakan opencv-python lebih cepat untuk lebih banyak operasi pada gambar:

import cv2
import matplotlib.pyplot as plt

im = cv2.imread('image.jpg')
im_resized = cv2.resize(im, (224, 224), interpolation=cv2.INTER_LINEAR)

plt.imshow(cv2.cvtColor(im_resized, cv2.COLOR_BGR2RGB))
plt.show()
Qhan
sumber
4

Ini sederhana Gunakan kode semu berikut

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

image = imread('...')  // choose image location

plt.imshow(image)

plt.show() // ini akan menampilkan gambar di konsol.

Ayush Srivastava
sumber
4

Saran pertama Anda berhasil untuk saya

from IPython.display import display, Image
display(Image(filename='path/to/image.jpg'))
Harry Moreno
sumber
Ini akan selalu tampil pertama jika ada juga plot lain, mengapa demikian?
Christos Karapapas
1
tidak yakin. Saya bukan ahli ipython. Ada beberapa cara untuk menampilkan gambar seperti yang Anda lihat dari jawaban di sini.
Harry Moreno
2

Menggunakan Jupyter Notebook, kodenya dapat sesederhana berikut ini.

%matplotlib inline
from IPython.display import Image
Image('your_image.png')

Terkadang Anda mungkin ingin menampilkan serangkaian gambar dalam loop for, dalam hal ini Anda mungkin ingin menggabungkan displaydan Imagemembuatnya berfungsi.

%matplotlib inline
from IPython.display import display, Image
for your_image in your_images:
    display(Image('your_image'))
Fei Yao
sumber
1

Kode Anda:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

Apa yang seharusnya:

plt.imshow(mpimg.imread('MyImage.png'))
File_name = mpimg.imread('FilePath')
plt.imshow(FileName)
plt.show()

Anda kehilangan a plt.show()kecuali Anda berada di notebook Jupyter, IDE lain tidak secara otomatis menampilkan plot sehingga Anda harus menggunakan plt.show()setiap kali Anda ingin menampilkan plot atau membuat perubahan pada plot yang ada dalam kode tindak lanjut.

Rohit Madan
sumber
1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Rajan saha Raju
sumber