আইপিথন নোটবুকে পিআইএল চিত্রটি কীভাবে প্রদর্শিত হবে


110

এটি আমার কোড

from PIL import Image
pil_im = Image.open('data/empire.jpg')

আমি এটিতে কিছু চিত্র ম্যানিপুলেশন করতে চাই এবং তারপরে এটি স্ক্রিনে প্রদর্শন করব।
পাইথন নোটবুকে পিআইএল চিত্রটি দেখায় আমার সমস্যা হচ্ছে।

আমি চেষ্টা করেছি:

print pil_im

এবং শুধু

pil_im

তবে উভয়ই আমাকে দেয়:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=569x800 at 0x10ECA0710>

আপনি কি পূর্বরূপের জন্য চিত্রটি প্রদর্শন করতে চান, বা আপনি ইনলাইন চিত্রটি দেখাতে চান?
আনজেল

1
ইনলাইন, কক্ষের পরে
WebOrCode

উত্তর:


163

Module: displayছবিটি লোড করতে আপনি আইপথন ব্যবহার করতে পারেন । আপনি ডক থেকে আরও পড়তে পারেন ।

from IPython.display import Image 
pil_img = Image(filename='data/empire.jpg')
display(pil_img)

আপডেট

ওপি এর প্রয়োজন ব্যবহার করতে হয় PIL, যদি আপনি ইনলাইন ইমেজ দেখাতে চান, আপনি ব্যবহার করতে পারেন matplotlib.pyplot.imshowসঙ্গে numpy.asarrayএটাও মত:

from matplotlib.pyplot import imshow
import numpy as np
from PIL import Image

%matplotlib inline
pil_im = Image.open('data/empire.jpg', 'r')
imshow(np.asarray(pil_im))

আপনার যদি কেবল ইনলাইন না হয়ে কেবল পূর্বরূপের প্রয়োজন হয় তবে আপনি কেবল এটি ব্যবহার করতে showপারেন:

pil_im = Image.open('data/empire.jpg', 'r')
pil_im.show()

5
IPython.coreএটি থেকে কোনও কিছু আমদানি করবেন না স্থিতিশীল এপিআই নয়, আমরা স্থিতিশীল এপিআই সরাসরিভাবে প্রকাশ করি IPython.display। আমি নিজেই পোস্টটি সম্পাদনা করেছি।
ম্যাট 10

আপনি ফাইল থেকে চিত্র প্রদর্শন করা হয়। আমি আমার উদাহরণের মতো পিআইএল থেকে জিজ্ঞাসা করেছিpil_im
ওয়েবঅরকোড

@ ম্যাট, এটি পরিষ্কার করার জন্য ধন্যবাদ। যদিও আমি কখনও ব্যবহার করে সমস্যায় core
পড়িনি

@ ওয়েবঅরকোড, আমি ওপিতে PILঅনুরোধ অনুযায়ী সমাধান প্রদানের জন্য আমার উত্তর আপডেট করেছি ।
আনজেল

1
@ গ্রেটভোভান যে প্রাকদর্শনটি আইপথন নোটবুক-উদাহরণস্বরূপ কোনও ব্রাউজার ব্যবহার করছে না (বা নতুন সংস্করণের জন্য জুপিটার), ওয়েব ব্রাউজারটি প্রয়োজন হয় না, যদি তা বোঝা যায়?
আনজেল

48

আইপিথন ডিসপ্লেটি একটি নোটবুকে পিআইএল চিত্রগুলি রেন্ডার করতে ব্যবহার করুন।

from PIL import Image               # to load images
from IPython.display import display # to display images

pil_im = Image.open('path/to/image.jpg')
display(pil_im)

3
এবং যদি আপনি কেবল একটি চিত্র দ্রুত পরীক্ষা করতে চান তবে এটির মান দেখতে আপনি কেবল এটি "ফিরিয়ে" দিতে পারেন এবং এটি স্বয়ংক্রিয়ভাবে প্রদর্শিত হবে
সিপ্রিয়ান টোমাইগা

1
এটি অন্যান্য উত্তরের তুলনায় অনেক সহজ - বাইটসআইও বা নিম্পের অ্যারেতে রূপান্তর করার দরকার নেই।
levis501

এছাড়াও এটি আরও পারফরম্যান্ট হতে হবে (যদি দোভাষী বুঝতে না পারে যে ডেটাটি পিছনে এবং চতুর্থটি প্রতিলিপি করা হচ্ছে)
বেডসচ

দুর্ভাগ্যক্রমে আমি এই কোলাব নোটবুকটিতে কাজ করতে পারি না: - /
লেভন

এটিই সহজ পদ্ধিতি - আইপিথন থেকে কেবল ডিসপ্লে অবজেক্ট এবং পিআইএল থেকে চিত্রটি বের করার জন্য ধন্যবাদ thanks আমি অদ্ভুত ডেটা থেকে একটি চিত্র তৈরি করতে পিআইএল ব্যবহার করছিলাম এবং এটি কেবল আমার নোটবুকে প্রদর্শন করতে চেয়েছিলাম - এটি সুন্দর এবং সরলভাবে কাজ করেছে।
ডেভ ক্যাম্পবেল

20

আমি দেখেছি যে এটি কাজ করছে is

# source: http://nbviewer.ipython.org/gist/deeplook/5162445
from io import BytesIO

from IPython import display
from PIL import Image


def display_pil_image(im):
   """Displayhook function for PIL Images, rendered as PNG."""

   b = BytesIO()
   im.save(b, format='png')
   data = b.getvalue()

   ip_img = display.Image(data=data, format='png', embed=True)
   return ip_img._repr_png_()


# register display func with PNG formatter:
png_formatter = get_ipython().display_formatter.formatters['image/png']
dpi = png_formatter.for_type(Image.Image, display_pil_image)

এর পরে আমি ঠিক করতে পারি:

pil_im

তবে এটি অবশ্যই শেষ কক্ষের শেষ পংক্তিতে হবে, এর printপরে কোনও কিছুই নেই


2
আপনি ডিসপ্লেটি প্রদর্শন করতে ডিসপ্লে.ডিসপ্লে ব্যবহার করতে পারেন immediately সেলটিতে সর্বশেষে থাকার উপর নির্ভরশীলতা এড়িয়ে আপনি অবিলম্বে তৈরি করেছেন চিত্র: প্রদর্শন.ডিসপ্লে (ip_img)। আপনি এখানে এটি ব্যবহার দেখতে পারেন: tensorflow.org/tutorials/mandelbrot
ডেভিড এফ

@ ডেভিডএফ না, মনে হচ্ছে আপনি পারছেন না। উপরের সমস্ত আদেশের চেষ্টা করা। কীভাবে একজন নোটবুকে একটি চিত্র দেখায়?
ক্রিস্টোফার

15

কেস পাইথন 3

from PIL import Image
from IPython.display import HTML
from io import BytesIO
from base64 import b64encode

pil_im = Image.open('data/empire.jpg')
b = BytesIO()  
pil_im.save(b, format='png')
HTML("<img src='data:image/png;base64,{0}'/>".format(b64encode(b.getvalue()).decode('utf-8')))

এটি চিত্রটি তার আসল আকারে দেখাচ্ছে। উদাহরণস্বরূপ, যদি চিত্রটি 32x32 হয়, তবে আউটপুটও খুব ছোট হবে। এইচটিএমএল ফাংশনে ম্যানুয়ালি মাপ দেবেন কীভাবে?
প্রমোদ পাতিল

@ প্রমোদপ্যাটিল ইজি সোলান: style=\"width:100px; height:100px;\"এর মধ্যে পেস্ট করুন <imgএবংsrc
সামি বেঞ্চিরিফ

7

বালিশ ব্যবহার করে জুপিটারে অনেক সহজ।

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

4

আপনি প্যাকেজ পিআইএল থেকে চিত্র শ্রেণি ব্যবহার করে একটি চিত্র খুলতে পারেন এবং এটি সরাসরি plt.imshow দিয়ে প্রদর্শন করতে পারেন।

# First import libraries.
from PIL import Image
import matplotlib.pyplot as plt

# The folliwing line is useful in Jupyter notebook
%matplotlib inline

# Open your file image using the path
img = Image.open(<path_to_image>)

# Since plt knows how to handle instance of the Image class, just input your loaded image to imshow method
plt.imshow(img)

2

আপনি যদি পাইলব এক্সটেনশন ব্যবহার করে থাকেন তবে আপনি চিত্রটিকে একটি নমপি অ্যারে রূপান্তর করতে পারেন এবং ম্যাটপ্ল্লোলিবের ইমশো ব্যবহার করতে পারেন।

%pylab # only if not started with the --pylab option
imshow(array(pil_im))

সম্পাদনা: মন্তব্যে উল্লিখিত হিসাবে পাইল্যাব মডিউলটি অবচয় করা হয়েছে, সুতরাং পরিবর্তে ম্যাটপ্ল্লিটিব যাদু ব্যবহার করুন এবং স্পষ্টভাবে ফাংশনটি আমদানি করুন:

%matplotlib
from matplotlib.pyplot import imshow 
imshow(array(pil_im))

2
পাইলাব অবচিত, ব্যবহার করবেন না।
ম্যাট 10

2

অন্যান্য উত্তর এবং আমার প্রচেষ্টার উপর ভিত্তি করে, সেরা অভিজ্ঞতাটি হ'ল প্রথমে ইনস্টল করা, বালিশ এবং স্কিপি করা হবে, তারপরে আপনার বৃহত্তর নোটবুকে নিম্নলিখিত শুরুর কোডটি ব্যবহার করুন:

%matplotlib inline
from matplotlib.pyplot import imshow
from scipy.misc import imread

imshow(imread('image.jpg', 1))

1

একটি ক্লিনার পাইথন 3 সংস্করণ যা স্ট্যান্ডার্ড নিম্পি, ম্যাটপ্ল্লোব এবং পিআইএল ব্যবহার করে। URL থেকে খোলার জন্য উত্তরটি মার্জ করা ging

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

pil_im = Image.open('image.jpg')
## Uncomment to open from URL
#import requests
#r = requests.get('https://www.vegvesen.no/public/webkamera/kamera?id=131206')
#pil_im = Image.open(BytesIO(r.content))
im_array = np.asarray(pil_im)
plt.imshow(im_array)
plt.show()

0

আমি কোনও চিত্র প্রদর্শন না করে ইনস্টলেশনটি অনুসরণ করার পরামর্শ দিচ্ছি () পিআইএল আমদানির চিত্র থেকে)

image sudo-get ইনস্টল ইমেজম্যাগিক


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.