Hiển thị hình ảnh bằng Python


99

Tôi đã cố gắng sử dụng IPython.display với mã sau:

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

Tôi cũng đã cố gắng sử dụng matplotlib với mã sau:

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

Trong cả hai trường hợp, không có gì được hiển thị, thậm chí không có thông báo lỗi.

Câu trả lời:


191

Nếu bạn đang sử dụng matplotlib và muốn hiển thị hình ảnh trong sổ tay tương tác của mình, hãy thử các cách sau:

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

Cảm ơn câu trả lời của bạn, nó gần như hoạt động :-) Hình ảnh được hiển thị, nhưng các mức màu xám được thay thế bằng cách sử dụng ống dẫn lửa. Bất kỳ ý tưởng?
FiReTiTi

3
Hãy thử xác định bản đồ màu một cách rõ ràng: plt.imshow (lum_img, cmap = "gray")
Joe Bathelt vào

3
Theo hiểu biết của tôi, lệnh plt.show () cuối cùng tạo ra màn hình. Trước đó, bạn có thể thêm vào cốt truyện, ví dụ bằng cách thêm các lớp vào hình ảnh. Tôi khuyên bạn nên hướng dẫn hình ảnh matplotlib như một tài liệu tham khảo: matplotlib.org/users/image_tutorial.html
Joe Bathelt

5
Cảm ơn câu trả lời của bạn, bây giờ nó hoạt động hoàn hảo! Chỉ là một chút chi tiết cho độc giả tiềm năng, nó "xám" thay vì "xám".
FiReTiTi

Không, Grey là cách viết chính xác và nguyên bản. Màu xám đã được sử dụng trong một số sai lệch của tiếng Anh, do đó, phổ biến hơn ở các nước như Hoa Kỳ.
perfo

37

Nếu bạn sử dụng matplotlib, bạn cần hiển thị hình ảnh bằng cách sử dụng plt.show()trừ khi bạn không ở chế độ tương tác. Ví dụ:

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

Đọc một câu trả lời khác, tôi chỉ nhận được rằng tôi phải thêm plt.show () sau mã tôi đã có, thay vì thay thế imshow. Cảm ơn bạn đã giúp đỡ.
FiReTiTi

Tôi nghĩ điều này trả lời câu hỏi chính xác so với câu trả lời được chấp nhận.
Prasad Raghavendra

20

Theo một cách đơn giản hơn nhiều, bạn có thể làm tương tự bằng cách sử dụng

from PIL import Image

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

1
Cảm ơn sự giúp đỡ của bạn. Tôi đã cài đặt PIL và bây giờ nó hoạt động. Bất kỳ ý tưởng tại sao hai phương pháp tôi đã thử không hoạt động?
FiReTiTi

Nếu không thể cài đặt PIL (như trường hợp của tôi), hãy thử Pillow, nó hoạt động như một sự quyến rũ đối với tôi.
mrk

1
Tôi tự hỏi import Imagecâu lệnh hoạt động như thế nào ; không nên nó được from PIL import Image?
Laszlo Treszkai

Giải pháp này không nhất thiết phải đóng bộ mô tả tệp. Thay vào đó, hãy sử dụng nó với trình quản lý ngữ cảnh:with Image.open('image.jpg') as im: im.show()
Laszlo Treszkai

ImageGói này là gì?
Louis Yang

10

Điều này hiệu quả với tôi, Lấy cảm hứng từ @the_unknown_spirit

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

5

Sử dụng opencv-python nhanh hơn để có nhiều thao tác hơn trên hình ảnh:

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

Thật đơn giản Sử dụng mã giả sau

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

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

plt.imshow(image)

plt.show() // điều này sẽ hiển thị cho bạn hình ảnh trên bảng điều khiển.


4

Gợi ý đầu tiên của bạn phù hợp với tôi

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

Điều này sẽ luôn hiển thị đầu tiên nếu cũng có các âm mưu khác, tại sao lại như vậy?
Christos Karapapas

1
không chắc. Tôi không phải là một chuyên gia ipython. Có một số cách để hiển thị hình ảnh như bạn có thể thấy từ các câu trả lời ở đây.
Harry Moreno

2

Sử dụng Máy tính xách tay Jupyter, mã có thể đơn giản như sau.

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

Đôi khi bạn có thể muốn hiển thị một loạt hình ảnh trong một vòng lặp for, trong trường hợp đó, bạn có thể muốn kết hợp displayImagelàm cho nó hoạt động.

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

1

Ma cua ban:

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

Nó phải là gì:

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

bạn đang thiếu một plt.show()trừ khi bạn đang ở trong sổ ghi chép Jupyter, các IDE khác không tự động hiển thị các ô, vì vậy bạn phải sử dụng plt.show()mỗi khi muốn hiển thị một ô hoặc thực hiện thay đổi đối với một ô hiện có trong mã tiếp theo.


1
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.