แสดงภาพด้วย Python


98

ฉันพยายามใช้ IPython.display ด้วยรหัสต่อไปนี้:

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

ฉันพยายามใช้ matplotlib ด้วยรหัสต่อไปนี้:

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

ในทั้งสองกรณีจะไม่มีอะไรปรากฏแม้แต่ข้อความแสดงข้อผิดพลาด

คำตอบ:


189

หากคุณใช้ matplotlib และต้องการแสดงภาพในสมุดบันทึกแบบโต้ตอบของคุณให้ลองทำดังต่อไปนี้:

%pylab inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('your_image.png')
imgplot = plt.imshow(img)
plt.show()

ขอบคุณสำหรับคำตอบมันใช้งานได้เกือบ :-) ภาพจะปรากฏขึ้น แต่ระดับสีเทาจะถูกแทนที่โดยใช้ไฟลัท ความคิดใด ๆ ?
FiReTiTi

2
ลองกำหนด colormap อย่างชัดเจน: plt.imshow (lum_img, cmap = "gray")
Joe Bathelt

3
ในความเข้าใจของฉันคำสั่ง plt.show () สุดท้ายสร้างการแสดงผล ก่อนหน้านั้นคุณสามารถเพิ่มลงในพล็อตเช่นการเพิ่มเลเยอร์ให้กับรูปภาพ ฉันขอแนะนำการสอนเกี่ยวกับรูปภาพ matplotlib เป็นข้อมูลอ้างอิง: matplotlib.org/users/image_tutorial.html
Joe Bathelt

5
ขอบคุณสำหรับคำตอบตอนนี้มันทำงานได้อย่างสมบูรณ์แบบ! รายละเอียดเล็ก ๆ น้อย ๆ สำหรับผู้อ่านที่มีแนวโน้มจะเป็น "สีเทา" แทนที่จะเป็น "สีเทา"
FiReTiTi

ไม่สีเทาเป็นการสะกดที่ถูกต้องและเป็นต้นฉบับ Grey ถูกนำมาใช้ในการเบี่ยงเบนของภาษาอังกฤษดังนั้นจึงพบได้บ่อยในประเทศต่างๆเช่นสหรัฐอเมริกา
perfo

37

หากคุณใช้matplotlibคุณจะต้องแสดงภาพโดยใช้plt.show()เว้นแต่คุณจะไม่ได้อยู่ในโหมดโต้ตอบ เช่น:

plt.figure()
plt.imshow(sample_image) 
plt.show()  # display it

อ่านคำตอบอื่นฉันเพิ่งเข้าใจว่าฉันต้องเพิ่ม plt.show () หลังรหัสที่ฉันมีอยู่แล้วแทนที่จะแทนที่ imshow ขอบคุณสำหรับความช่วยเหลือของคุณ.
FiReTiTi

ฉันคิดว่าสิ่งนี้ตอบคำถามได้อย่างแม่นยำเมื่อเทียบกับคำตอบที่ยอมรับ
Prasad Raghavendra

18

ด้วยวิธีที่ง่ายกว่ามากคุณสามารถทำได้โดยใช้ไฟล์

from PIL import Image

image = Image.open('image.jpg')
image.show()

1
ขอขอบคุณสำหรับความช่วยเหลือของคุณ. ฉันติดตั้ง PIL แล้วและตอนนี้ใช้งานได้ มีความคิดว่าทำไมสองวิธีที่ฉันลองใช้ไม่ได้ผล?
FiReTiTi

หากไม่สามารถติดตั้ง PIL ได้ (เช่นเดียวกับในกรณีของฉัน) ให้ลองใช้ Pillow มันใช้งานได้ดีสำหรับฉัน
mrk

1
ฉันสงสัยว่าimport Imageคำสั่งทำงานอย่างไร มันไม่ควรfrom PIL import Image?
Laszlo Treszkai

วิธีนี้ไม่จำเป็นต้องปิด file descriptor ให้ใช้กับผู้จัดการบริบทแทน:with Image.open('image.jpg') as im: im.show()
Laszlo Treszkai

Imageแพคเกจนี้คืออะไร?
Louis Yang

9

สิ่งนี้ได้ผลสำหรับฉันแรงบันดาลใจจาก @the_unknown_spirit

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

5

การใช้ opencv-python นั้นเร็วกว่าสำหรับการทำงานกับรูปภาพมากขึ้น:

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()

4

มันง่ายมากใช้รหัสหลอกต่อไปนี้

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

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

plt.imshow(image)

plt.show() // นี่จะแสดงภาพบนคอนโซล


4

คำแนะนำแรกของคุณใช้ได้ผลกับฉัน

from IPython.display import display, Image
display(Image(filename='path/to/image.jpg'))

สิ่งนี้จะแสดงก่อนเสมอหากมีพล็อตอื่นด้วยเหตุใดจึงเป็นเช่นนั้น
Christos Karapapas

1
ไม่แน่ใจ. ฉันไม่ใช่ผู้เชี่ยวชาญด้าน ipython มีหลายวิธีในการแสดงภาพดังที่คุณเห็นจากคำตอบที่นี่
Harry Moreno

2

การใช้ Jupyter Notebook รหัสสามารถทำได้ง่ายๆดังต่อไปนี้

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

บางครั้งคุณอาจต้องการแสดงภาพเป็นชุดสำหรับลูปซึ่งในกรณีนี้คุณอาจต้องการรวมdisplayและImageทำให้มันใช้งานได้

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

1

รหัสของคุณ:

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

ควรเป็นอย่างไร:

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

คุณหายไปplt.show()เว้นแต่คุณจะอยู่ในสมุดบันทึก Jupyter IDE อื่น ๆ จะไม่plt.show()แสดงพล็อตโดยอัตโนมัติดังนั้นคุณต้องใช้ทุกครั้งที่คุณต้องการแสดงพล็อตหรือเปลี่ยนแปลงพล็อตที่มีอยู่ในโค้ดติดตาม


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.