همه دسته بندی ها
PIL and PILLOW library for image processing in Python - داده کاوی ویستا

کتابخانه PIL و PILLOW برای پردازش تصویر در پایتون

 

PIL که به کتابخانه تصویر پایتون معروف است مخفف Python Imaging Library است. کتابخانه PIL یکی از کتابخانه های پردازش تصویر پایتون است.

این کتابخانه برای عملیات های مربوط به پردازش تصویر مانند باز کردن، دستکاری و ذخیره تصاویر در قالب های مختلف در پایتون پشتیبانی می کند. با این حال، توسعه آن از سال 2009 متوقف شده است.

اما نسخه توسعه یافته آن، کتابخانه Pillow در پایتون، همچنان پشتیبانی می شود. نصب ساده، قابلیت اجرا بر روی پلتفرم ها و سیستم عامل های اصلی و پشتیبانی از پایتون نسخه 3 از نقاط قوت این کتابخانه است که برنامه نویسان از آن برای پردازش تصاویر با پایتون استفاده می کنند.

 

آموزش نصب کتابخانه PIL :

برای استفاده از این کتابخانه  ، ابتدا باید آن را نصب کنید و برای این کار کافی است که کد زیر ار در cmd سیستم ویندوز خود وارد کنید:

pip install pil

و بعد از نصب برای استفاده از آن در کد فوق کافی است که آن را ایمپورت کنید :

from PIL import Image

کتابخانه تصویربرداری پایتون (Python Imaging Library) PIL عملیات کلی را برای کار بر روی یک تصویر ارائه می دهد، مانند تغییر اندازه، برش، چرخش، تغییر رنگ و موارد دیگر. PIL رایگان و آسان از آدرس زیر است در دسترس قرار دارد.

http://www.pythonware.com/products/pil/

با استفاده از PIL، می توانید تصاویر را از فرمت های مختلف بخوانید و در بسیاری از فرمت های عمومی بنویسید.

مهمترین بخش کتابخانه PIL ماژول Image است. به عنوان مثال، کد زیر برای خواندن یک تصویر مورد نیاز است:

from PIL import Image

img = Image.open(‘lena.jpg’)

در کد بالا عکسی به نام lena.jpg در پوشه حاوی کد در کنار کد قرار می دهیم و کد بالا آن را خوانده و در متغیر img قرار می دهد.

 

ایجاد تصویر بندانگشتی در پایتون :

با استفاده از کد زیر می توانیم یک تصویر را بخوانیم و یک تصویر کوچک از آن بسازیم.

تابع بندانگشتی چندین اندازه جدید می گیرد و اندازه تصویر را به اندازه نشان داده شده در تصویر کوچک تغییر می دهد.

برای ایجاد یک تصویر کوچک با حداکثر اندازه 128 پیکسل، از تابع زیر استفاده می کنیم:

img = Image.open(‘lena.jpg’)

img.thumbnail((128,128))

بریدن تصویر در پایتون با تابع crop :

برای بریدن یک تصویر باید مختصات دو نقطه یعنی نقطه شروع برش (چپ و بالا) و نقطه پایان برش (راست و پایین) را به تابع crop بدهیم ، بعنوان مثال کد زیر را در نظر بگیرید:

box = (100,100,400,400)

region = img.crop(box)

تغییر اندازه تصویر در پایتون :

اگر می خواهید اندازه تصویر را تغییر دهید، کافی است تابع تغییر اندازه را به صورت زیر فراخوانی کنید:

out = img.resize((128,128))

اندازه های جدید را بعنوان پارامتر ورودی به کد فوق داده ایم.

 

چرخاندن تصویر در پایتون با تابع rotate :

برای تلاش برای چرخاندن یک تصویر در خلاف جهت عقربه‌های ساعت، می‌توانیم به صورت زیر کدنویسی کنیم:

out = img.rotate(45)

زاویه چرخش را بعنوان پارامتر ورودی به آن داده ایم.

 

کتابخانه PILLOW : نحوه نصب و آموزش کار

کتابخانه Pillow دارای مجموعه ای از قابلیت های اولیه پردازش تصویر مانند «عملیات نقطه‌ای» (Point Operations)، فیلتر گذاری با مجموعه‌ای از «کرنل‌های پیچشی» (Convolutional Kernels) تعبیه شده و «تبدیلات فضای رنگی» (Color Space Conversion) برای کاربر و برنامه نویس قرار می دهد.

 

نصب کتابخانه PILLOW در پایتون

برای نصب این کتابخانه کافی است که دستور زیر را در cmd خود تایپ کنید :

pip install pillow

برای استفاده از کتابخانه PILLOW نیز کافی است که بعد از نصب ، آن را در کد خود import کنید :

from PIL import Image

خواندن و نمایش تصویر با PILLOW در پایتون :

اولین دستوری که باید قبل از کار با تصویر اجرا شود خواندن تصویر است. ما این کار را با روش open انجام می دهیم. مثلا در همان مسیر فایل پایتون یک عکس به نام lena.jpg قرار می دهیم و باز می کنیم و سپس با روش show نمایش می دهیم.

from PIL import Image

img = Image.open(“lena.jpg”)

img.show()

زمانی که متد open را اجرا می‌کنیم، نمونه‌ای (instance) از این متد برای ما می‌سازد که اگر آن را نمایش دهیم، اطلاعات عکس را به ما می‌دهد.

print(img)

# Output : <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=600×600 at 0x1DEF0E50E80

این عبارت نشان می دهد که عکس ما از نوع jpeg و حالت آن RGB است که نشان دهنده رنگی بودن و ابعاد آن 600*600 است.

 

ذخیره تصویر با PILLOW در پایتون:

ما از روش save برای ذخیره تصاویر استفاده می کنیم. پارامتری که این روش می پذیرد نام فایل است. برای مثال در کد زیر تصویر را به صورت lena2.png ذخیره می کنیم.

from PIL import Image

img = Image.open(“lena.jpg”)

img.show()

img.save(“lena2.png”)

چرخش تصویر در پایتون :

برای چرخش تصویر از روش rotate استفاده می کنیم که پارامتر ورودی آن درجه چرخش است.

توجه داشته باشید که چرخش در خلاف جهت عقربه های ساعت است.

به عنوان مثال در کد زیر ابتدا تصویر را 45 درجه چرخانده و به عنوان lena3 ذخیره کردیم.

rotated_img = img.rotate(45)

rotated_img.save(“lena3.jpg”)

تغییر اندازه تصویر در پایتون :

برای این کار از روش resize استفاده می کنیم.

این روش دو عدد را می گیرد که عرض و ارتفاع را به صورت tuple نشان می دهد و تصویر را به آن ابعاد تغییر می دهد. در کد زیر تصویر اصلی را به 200200 x تغییر می دهیم.

resized_img = img.resize((200,200))

 

بریدن تصویر در پایتون با PILLOW :

برای برش تصاویر از روش cropاستفاده می کنیم.

این روش مختصات چپ، بالا، راست و پایین تصویر را به عنوان پارامتر گرفته و آن را برش می دهد.

توجه داشته باشید که محور این مختصات در بالا سمت چپ است (0.0).

در کد زیر عکس را به یک مربع در وسط عکس اصلی تبدیل می کنیم که از چهار طرف 108 پیکسل فاصله دارد. چون مختصات از بالا سمت چپ شروع می شود، سپس سمت چپ و بالا مقدار 108 و سمت راست و پایین مقدار 108-1080 یعنی 972 را می گیرند.

croped_img = img.crop((108,108,972,972))

 

تبدیل تصویر در پایتون با PILLOW :

برای تبدیل کردن تصاویر به مدهای دیگر از متد convert استفاده می‌کنیم.

در کد زیر عکس خود را به grayscale یا خاکستری تبدیل کردیم.

grayed_img = img.convert(“L”)

 

بهبود تصویر در پایتون با کتابخانه PILLOW

با استفاده از این کتابخانه می توانید از 4 ابزار برای بهبود تصاویر استفاده کنید.

این ابزارها رنگ، کنتراست، روشنایی و وضوح تصاویر را کنترل می کنند.

همه اینها را در کد زیر دو برابر کردیم.

from PIL import ImageEnhance

enhancer = ImageEnhance.Color(img)

#===============

enhancer = ImageEnhance.Contrast(img)

#=============

enhancer = ImageEnhance.Brightness(img)

#============

enhancer = ImageEnhance.Sharpness(img)

اعمال فیلتر بر روی تصویر در پایتون با PILLOW

گذاشتن فیلتر قابلیت جالبی است که کتابخانه‌ی pillow در اختیار برنامه‌نویس قرار می‌دهد.

در این کتابخانه ۱۰ فیلتر وجود دارد که به صورت زیر است:

  • فیلتر BLUR
  • فیلتر CONTOUR
  • فیلتر DETAIL
  • فیلتر EDGE_ENHANCE
  • فیلتر EDGE_ENHANCE_MORE
  • فیلتر EMBOSS
  • فیلتر FIND_EDGES
  • فیلتر SMOOTH
  • فیلتر SMOOTH_MORE
  • فیلتر SHARPEN

 

در کد زیر با اعمال فیلتر Blur عکس را تار میکنیم:

from PIL import ImageFilter

img = Image.open(“lena.jpg”)

blured_img = img.filter(ImageFilter.BLUR)

blured_img .show()

 

«بهبود تصاویر» (Image Enhancement) در پایتون

با استفاده از ماژول ImageFilter در کتابخانه Pillow، تصاویر دیجیتال را می توان با دستکاری مقادیر “Contrast” بهبود بخشید.

from PIL import Image,ImageFilter 

#Read image

im = Image.open(‘image.jpg’)

#Display image 

im.show()

  

from PIL import ImageEnhance 

enh = ImageEnhance.Contrast(im) 

enh.enhance(1.8).show(“30% more contrast”)

5-pillow.png

 

 

PIL and PILLOW library for image processing in Python - داده کاوی ویستا

 

اگر در خصوص کتابخانه PILLOW نیاز به مثال های بیشتری داشتید بد نیست سری به داکیومنت PILLOW نیز بزنید.

 

دوره آموزشی زبان برنامه نویسی پایتون »کلیک کنید» یک برنامه جامع است که بر توسعه سریع نرم‌افزارهای کاربردی، برنامه‌نویسی شی‌گرا و کاربری ماژول و….  با استفاده از ابزار Python تمرکز دارد.

سپاسگذاریم از وقتی که برای خواندن این مقاله گذاشتید

.

برای خرید لایسنس نرم افزار Power BI کلیک کنید

.

برای مشاهده ویدیوهای آموزشی داده کاوی و هوش تجاری ما را در شبکه های اجتماعی دنبال کنید

Youtube Chanel :VISTA Data Mining کانال یوتیوب

Aparat Chanel: VISTA Data Mining کانال آپارات

Instagram Chanel: VISTA Data Mining کانال اینستاگرام

Telegram Chanel: VISTA Data Mining کانال تلگرام

Linkedin Chanel: VISTA Company کانال لینکدین

 

خرید دوره آموزشی پایتون

 

امتیاز دهید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید
ورود

هنوز حساب کاربری ندارید؟

خانه
0 محصول سبد خرید
0 علاقه مندی
حساب کاربری من