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

فهرست مطالب
کتابخانه Pillow چیست؟
کتابخانه Pillow پایتون، یکی از چندین کتابخانه کاربردی این زبان برنامه نویسی است که برای پردازش تصویر استفاده میشود. این کتابخانه به صورت رایگان و منبع باز بوده که جهت دستکاری و پردازش انواع تصاویر با فرمتهای گوناگون، به کار میرود. فرمتهای مختلف عکس که این کتابخانه از آن پشتیبانی میکند، شامل؛ PNG، JPEG، PPM، GIF، TIFF و BMP هستند. با استفاده از کتابخانه Pillow، میتوان کارهای مختلفی مثل برش، تغییر اندازه، اضافه کردن متن، چرخش، تغییر رنگ و …. را روی تصاویر انجام داد.
نقاط قوت کتابخانه Pillow پایتون، شامل؛ راه اندازی راحت، قابلیت اجرا روی پلتفرمها و سیستم عاملهای اصلی و پشتیبانی از نسخه 3 پایتون است. این کتابخانه نیز مانند سایر کتابخانههای پایتون، کاربردی راحت و ساده دارد که مورد توجه بسیاری از برنامه نویسان قرار میگیرد. این ویژگی باعث شده تا درصد بالایی از متخصصان، از این کتابخانه به صورت روزانه برای پردازش تصاویر استفاده کنند.
تفاوت Pillow با PIL اصلی
کتابخانه Pillow در پایتون، نمونه گسترش یافته کتابخانه PIL است که به عنوان کتابخانه تصویر پایتون شناخته میشود. کتابخانه PIL که مخفف عبارت Python Imaging Library میباشد، برای انجام عملیات مختلف روی تصاویر استفاده میشود؛ ولی از سال 2009، توسعه پیدا نکرده است. به همین دلیل نیز زیر مجموعه که همان Pillow میباشد، در زبان پایتون پشتیبانی میشود. کتابخانه PIL نیز همچنان توسط بسیاری از برنامه نویسان مورد استفاده قرار میگیرد ولی از نسخه 3 پایتون، پشتیبانی نمیکند. در ضمن، قابلیت نصب روی بسیاری از پلتفرمهای اصلی را نیز ندارد.
به نقل از سایت geeksforgeeks:
«پشتیبانی از کتابخانه تصویربرداری پایتون که همان pil است در سال ۲۰۱۱ متوقف شد. اما کتابخانه دیگری به نام Pillow برای پردازش تصویر که زیر مجموعه این کتابخانه میباشد و از Python3.x پشتیبانی میکند، به برنامه اضافه شد. Pillow به عنوان جایگزینی برای PIL جهت استفاده در آینده معرفی میشود. Pillow از تعداد زیادی فرمت فایل تصویری مثل BMP، PNG، JPEG و TIFF پشتیبانی میکند. این کتابخانه با ایجاد رمزگشاهای فایل جدید، قابلیت پشتیبانی از فرمتهای جدیدتر را در کتابخانه بسیار راحت کرده است.»
نصب و راه اندازی کتابخانه Pillow در پایتون
در کتابخانه Pillow پایتون، مجموعهای از قابلیتهای پردازش تصویر مثل کارهای نقطهای با کرنلهای پیچشی تعبیه شده و نتیجه آن تصاویر رنگی میباشد. این تغییرات با اهداف مختلف در اختیار برنامه نویسان و کسانی قرار میگیرد که نیاز به ایجاد تغییر و تحول در تصاویر دارند. برای نصب این کتابخانه باید به صورت زیر اقدام کرد.
- برای نصب این کتابخانه، کافی است کد زیر را در cmd خود قرار دهید. pip install pillow
- برای استفاده از کتابخانه PILLOW نیز باید بعد از نصب، عبارت زیر را در کد مورد نظر خود، import کنید. from PIL import Image
قابلیتهای اصلی کتابخانه Pillow
همانطور که قبلاً نیز به آن اشاره کردیم، کار اصلی کتابخانه Pillow پایتون، پردازش تصاویر است. این پردازش به مجموعه کارهایی گفته میشود که جهت بهبود، کیفیت و تغییر عکسها به کار میرود. ولی به صورت کلی، قابلیتهای اصلی این کتابخانه را میتوان به صورت زیر عنوان کرد.
باز کردن و ذخیره تصاویر
یکی از اصلیترین قابلیتهای کتابخانه Pillow پایتون، باز کردن و ذخیره تصاویر با فرمتهای مختلف است. اولین کاری که باید روی تصویر انجام شود تا بتوان سایر تغییرات یا کارها را روی آن اعمال کرد، نمایش یا باز کردن آن میباشد. برای باز کردن تصویر از متد open استفاده میشود. برای مثال، عکسی با نام lena را میخواهیم باز کنیم و سپس با متد show نمایش دهیم. کد نمونه برای انجام این فعالیت در کتابخانه پایتون، به صورت زیر است.
from PIL import Image img = Image.open("lena.jpg") img.show()
بعد از تمام شدن پردازش یا تغییراتی که روی تصاویر انجام میشود، میتوان با کتابخانه Pillow پایتون، اقدام به ذخیره سازی آن کرد. هنگام ذخیره، میتوانید یک پسوند متفاوت با نمونه اصلی مشخص کرده و تصویر جدید را با پسوند و فرمت جدید، ذخیره کنید. نحوه ذخیره یک تصویر در کتابخانه Pillow پایتون، با نمایش کد به صورت زیر است.
from PIL import Image img = Image.open("lena.jpg") img.show() img.save("lena2.png")
تغییر اندازه، چرخش و برش تصاویر
دیگر قابلیتهای Pillow برای پردازش تصویر، تغییر اندازه، برش و چرخش عکسها هستند. برای انجام هر کدام از این پردازشها، باید متد خاصی استفاده شود که متناسب با آنها نیز کد پردازش، متفاوت است.
- تغییر اندازه تصویر: برای انجام این کار از متد resize استفاده میشود. این متد دو عدد که اطلاعات مربوط به عرض و ارتفاع است را در قالب tuple میگیرد و عکس را به همان ابعاد، تغییر میدهد. بهعنوانمثال در کد زیر میخواهیم عکس را به ابعاد 200*200 تغییر دهیم.
resized_img = img.resize((200,200))
- چرخش عکس: متدی که در این روش استفاده میشود، rotate است. درجه چرخش عکس را معمولاً با پارامتر ورودی، نمایش میدهند. باید توجه کرد که چرخش عکس در خلاف جهت عقربههای ساعت انجام میشود. بهعنوانمثال، در کد زیر، تصویر ابتدا 45 درجه میچرخد و سپس با نام lena3 ذخیره خواهد شد.
rotated_img = img.rotate(45) save("lena3.jpg")
- برش تصاویر: متد مورد نظر برای برش تصاویر در کتابخانه پایتون، crop است. با این متد، میتوان مختصات تصویر در تمام بخشهای بالا، پایین، چپ و راست را برش داد. نکته قبل توجه در برش این تصاویر، صفر بودن محور مختصات در بالا و چپ است. بهعنوانمثال، تصویری را در نظر میگیریم که از چهار طرف، 108 پیکسل فاصله دارد. با توجه به صفر بودن اندازه مختصات از چپ و بالا، دو عدد مربوط به بالا و چپ، 108 است. با کم کردن مقدار 108 از 1080 نیز به 972 می رسیم که اندازه پایین و راست خواهد بود. کد نمونه آن نیز به صورت زیر نمایش داده میشود.
croped_img = img.crop((108,108,972,972))
افزودن متن به تصویر
یکی دیگر از قابلیتهای کاربردی کتابخانه Pillow پایتون، اضافه کردن متن به تصاویر است که به عنوان عکس نوشته نیز در فضاهای مجازی استفاده میشوند. برای انجام این کار از متد مختلفی مثل text، برای اضافه کردن متن به تصویر، font برای انتخاب فونت مناسب و fill برای دادن رنگ و طرح به نوشته مورد نظر، استفاده میشود. کد نمونه برای نوشتن متن روی یک تصویر با استفاده از کتابخانه pillow، به صورت زیر است.
obj.text( (x,y), Text, font, fill)
اعمال فیلتر و افکت روی عکسها
یکی دیگر از قابلیتهای قابل توجه کتابخانه Pillow پایتون، فیلتر و افکتهای آن است که میتوان برای ایجاد تغییر در تصاویر استفاده کرد. این فیلترها در انواع مختلفی وجود دارند که هر کدام از آنها را میتوانید با توجه به نیاز و شرایط خود، استفاده کنید. به صورت کلی در این کتابخانه 10 فیلتر وجود دارد که شامل موارد زیر هستند.
- فیلتر BLUR
- فیلتر CONTOUR
- فیلتر DETAIL
- فیلتر EDGE_ENHANCE
- فیلتر EDGE_ENHANCE_MORE
- فیلتر EMBOSS
- فیلتر FIND_EDGES
- فیلتر SMOOTH
- فیلتر SMOOTH_MORE
- فیلتر SHARPEN
کد نمونه کتابخانه Pillow پایتون برای اعمال هر کدام از فیلترها روی تصاویر، به صورت زیر است. در کد زیر که کلمه بلور داخل آن اعمال شده، میتوان تصویر را تار یا محو کرد.
from PIL import ImageFilter img = Image.open("lena.jpg") blured_img = img.filter(ImageFilter.BLUR) blured_img .show()
پروژههای ساده با Pillow
پشتیبانی کتابخانه Pillow پایتون از فرمتهای مختلف عکس باعث شده تا بتوان از این کتابخانه برای انجام پروژههای کوچک استفاده کرد. هر کدام از این پروژهها، به راحتی و با اعمال چند کد ساده، قابل اجرا هستند که در ادامه به برخی از کاربردیترین آنها اشاره میکنیم.
ساخت واترمارک روی تصاویر
یکی از پروژههای ساده و قابل انجام با کتابخانه Pillow پایتون، اعمال واتر مارک روی تصاویر است. اجرای این پروژه مورد توجه کسب و کارها و مجموعههای مختلفی میباشد که میخواهند تصویر خود را شخصی سازی کنند. برای مثال، میخواهید به یک یا چند تصویر، واترمارک اضافه کنید. برای انجام این کار باید تمام متدهای لازم را به برنامه پایتون وارد کرد. هر کدام از این متدها با توجه به نوع و کیفیت تصاویر، متغیرند. برخی از این متد عبارتاند از:
- متد os برای ایجاد و حذف دایرکتوریهای جدید و قبلی
- ذخیره طول و عرض جدید تصویر با متد resize
- در انتها نیز از متد paste برای قرار دادن واترمارک روی عکس استفاده میشود.کد نمونه برای اجرای واترمارک روی تصاویر، به صورت زیر است.
paste(logo_image, (width – logo_width, height – logo_height), logo_image) - سپس میتوانید تصویر واترمارک شده را با کد زیر، ذخیره کنید.
save(‘./watermarked_Images/’ + filename + “.jpg”)
تولید تصاویر بندانگشتی (thumbnail)
یکی دیگر از پروژهها و کارهای سادهای که انجام آن با کتابخانه Pillow پایتون به راحتی قابل اجراست، ایجاد تصاویر بند انگشتی است. برای اجرای این پروژه از تابع thumbnail استفاده خواهد شد تا با تغییر اندازه عکس، ابعاد آن حفظ شود. در این تابع، دو اندازه به کار میرود که نشان دهنده حداکثر عرض و طول تصویر هستند. کد نمونه برای اعمال این پروژه روی تصاویر با ابعاد 200 در200، به صورت زیر میباشد.
image = Image.open('sample.jpg') image.thumbnail((200, 200)) image.save('sample_thumbnail.jpg')
ساخت اسلاید تصویری خودکار
امکان اجرای پروژه های بسیار زیادی با کتابخانه Pillow پایتون وجود دارد که هر کدام از آنها، برای مخاطبان، کاربرد خاصی دارند. ساخت اسلاید تصویر به صورت خودکار، یکی دیگر از قابلیتهای ساده و کاربردی این کتابخانه به شمار میآید. در حال حاضر، نمایش درست و جذاب محصولات در فضای اینترنت، باعث جلب توجه بیشتر مخاطبان میشود. ساخت اسلایدی تصاویر خودکار، یکی از کارهایی است که به راحتی با کتابخانه pillow قابل اجراست.
برای آشنایی با قابلیتهای متنوع کتابخانه Pillow در پایتون و اجرای درست آنها، بهترین راه شرکت در دورههای آموزشی مرتبط است. دوره پردازش تصویر در مجموعه دیتایاد، یکی از بهترین دورهها برای کسب مهارت و اطلاعات در این زمینه میباشد. برای جزئیات بیشتر و شرایط این دوره، میتوانید با بخش پشتیبانی سایت و کارشناسان مجموعه، ارتباط برقرار کنید.
محدودیتها و نکات مهم در استفاده از Pillow
کتابخانه Pillow پایتون، به عنوان یکی از چند صد کتابخانه موجود در این زبان برنامه نویسی، در کنار تمام مزیتها، دارای محدودیتهایی نیز هست. با در نظر گرفتن برخی از نکات، میتوان خروجی و عملکرد مناسبتری از این کتابخانه داشت.
کار با فایلهای سنگین
زبان برنامه نویسی پایتون در مقایسه با سایر زبانها، سرعت کندتری دارد. این ویژگی در کتابخانه Pillow پایتون نیز وجود دارد. به همین دلیل، هنگام کار با فایلهای سنگین، ممکن است مشکلاتی مثل کندی سرعت یا وقت گیر بودن اجرای پروژه برای بسیاری از افراد پیش آید. قبل از پردازش تصاویر، بهتر است به حجم فایلها توجه کنید و در صورت امکان نیز با برنامههای مناسب، حجم تصاویر را کاهش دهید.
ادغام با دیگر کتابخانهها مثل OpenCV
علاوه بر کتابخانه Pillow پایتون، کتابخانههای دیگری نیز در این زبان برنامه نویسی برای پردازش تصاویر وجود دارند. یکی از این کتابخانهها، OpenCV است که جهت پردازش حرفهای تصاویر استفاده میشود. قابلیت ادغام کتابخانه Pillow با OpenCV در برنامه پایتون باعث میشود تا امکان اجرای پردازشهای حرفهای برای مخاطبان فراهم باشد. کسانی که اطلاعات و مهارت لازم در کار با این کتابخانهها را داشته باشند، میتوانند از قابلیتهای ادغام این دو کتابخانه، استفاده کنند.
اگر میخواهید مهارت خود را در برنامه نویسی تقویت کنید، دورههای آموزشی دوره جامع نخبگان پایتون دیتایاد را بررسی کنید. 09905501998
سوالات متداول
1-چه فرمتهایی در Pillow پشتیبانیشدهاند؟
کتابخانه Pillow پایتون، به عنوان یکی از کتابخانههای اصلی پردازش تصویر، از فرمتهای مختلفی پشتیبانی میکند. برخی از اصلیترین این فرمتها عبارتاند از: PNG، JPEG، PPM، GIF، TIFF و BMP. با استفاده از این کتابخانه، میتوان کارهای مختلفی مثل ذخیره، برش، تغییر سایز، چرخش و تغییر رنگ را روی تصاویر اعمال کرد.
2-آیا Pillow جایگزین PIL است؟
کتابخانه Pillow پایتون، یکی از زیر مجموعههای کتابخانه pil است که به صورت رایگان و منبع باز در دسترس افراد قرار دارد. pil به تنهایی یک کتابخانه بسیار قوی و کاربردی در پایتون است ولی چون از سال 2009 تاکنون، به روز نشده، از برنامه پایتون 3 پشتیبانی نمیکند. به همین دلیل نیز افراد از کتابخانه pillow که قابلیتهای بیشتر و بهروزتری دارد، استفاده میکنند.
3-برخی از اصلیترین قابلیتهای کتابخانه Pillow پایتون کداماند؟
این کتابخانه برای انجام پروژههای ساده و کاربردی استفاده میشود که دلیل آن نیز قابلیتهایی است که دارد. از اصلیترین قابلیتهای این کتابخانه میتوان به برش، ذخیره، نمایش، چرخش، تغییر سایز، ابعاد و رنگ تصاویر اشاره کرد.
4-بهترین راه برای کسب مهارت برای کار با کتابخانه Pillow پایتون چیست؟
یکی از بهترین روشها برای کسب مهارت در این زمینه، شرکت در دورههای آموزشی معتبر است. یکی از این دورهها نیز دوره جامع نخبگان پایتون در مجموعه دیتایاد میباشد. برای کسب اطلاعات بیشتر در مورد این دوره، میتوانید از طریق شماره تماس داخل سایت با بخش پشتیبانی ارتباط برقرار کنید.
خیلی عالی بود ممنون
مفید و کاربردی