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

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

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

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

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

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

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

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

 

در ادامه مباحت مرتبط با آموزش پردازش تصویر با پایتون ، که به معرفی کتابخانه ها و ابزارهای موجود در پایتون برای پردازش تصویر پرداختیم  ، به آموزش کتابخانه PIL و PILLOW می پردازیم .

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

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

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

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

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

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

 

مثال هایی از توابع موجود در PIL برای کار با تصاویر را در ادامه آورده ایم:

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

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

تابع thumbnail یک تاپل از سایز های جدید را می گیرد و تصویر را به اندازه هایی که در تا.ل آمده تغییر اندازه می دهد.

برای ایجاد تصویر بند انگشتی با حداکثر اندازه ۱۲۸ پیکسل از تابع زیر استفاده می کنیم:

 

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

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

 

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

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

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

 

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

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

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

 

 

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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

برای مثال در کد زیر ابتدا عکس را ۴۵ درجه چرخواندیم و آن را به نام lena3 ذحیره کردیم.

 

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

برای اینکار از متد resize بهره می‌بریم.

این متد دو عدد که بیانگر عرض و ارتفاع را در قالب tuple می‌گیرد و عکس را به آن ابعاد تغییر می‌دهد. در کد زیر عکس اصلی را به ابعاد ۲۰۰x200 تغییر می‌دهیم.

 

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

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

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

در نظر داشته باشید که محور این مختصات در بالا چپ (۰,۰) می‌باشد.

در کد زیر عکس را به یک مربعی از وسط عکس اصلی تبدیل می‌کنیم که از چهار طرف ۱۰۸ پیکسل فاصله دارد. چون مختصات از بالا چپ شروع می‌شود، پس چپ و بالا مقدار ۱۰۸ و راست و پایین مقدار 108-1080 که ۹۷۲ می‌شود، را می‌گیرند.

 

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

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

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

 

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

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

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

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

 

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

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

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

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

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

 

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

با استفاده از ماژول ImageFilter در کتابخانه Pillow، می‌توان تصاویر دیجیتالی را از طریق دستکاری مقادیر «کنتراست» (Contrast)، بهبود بخشید.

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

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

 

مطالب زیر را حتما بخوانید

دیدگاه ها

  1. ریحانه گفت:

    سلام من یه سوال دارم .من این کتابخانه رو که نصب میکنم ارور میده نمیدونم چرا.میشه راهنماییم کنید

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

نشانی ایمیل شما منتشر نخواهد شد.