استفاده از Pillow برای پردازش تصویر در پایتون

استفاده از Pillow برای پردازش تصویر در پایتون

در دنیای پردازش تصویر، پایتون به دلیل سادگی و گستردگی کتابخانه‌هایش، یکی از محبوب‌ترین زبان‌ها به شمار می‌رود. کتابخانه Pillow، که یک انشعاب از PIL (Python Imaging Library) است، ابزاری قدرتمند و انعطاف‌پذیر برای انجام انواع عملیات بر روی تصاویر در پایتون فراهم می‌کند. این مقاله به بررسی جامع Pillow، قابلیت‌های آن و نحوه استفاده از آن در پروژه‌های مختلف پردازش تصویر می‌پردازد. این آموزش در دسته ‘کتابخانه‌های خاص و کاربردی’ پایتون قرار می‌گیرد.

مقدمه‌ای بر Pillow

Pillow یک کتابخانه رایگان و متن‌باز است که امکانات گسترده‌ای برای باز کردن، دستکاری و ذخیره انواع فرمت‌های تصویری را فراهم می‌کند. این کتابخانه نه تنها از فرمت‌های رایج مانند JPEG، PNG، GIF و TIFF پشتیبانی می‌کند، بلکه قابلیت‌های پیشرفته‌تری مانند تغییر اندازه، برش، فیلتر کردن، اعمال جلوه‌های ویژه و تبدیل فرمت تصاویر را نیز ارائه می‌دهد. Pillow به دلیل سادگی استفاده و مستندات جامع، برای مبتدیان و متخصصان پردازش تصویر مناسب است.

نصب Pillow

نصب Pillow بسیار ساده است و می‌توان آن را با استفاده از pip، مدیر بسته پایتون، انجام داد. برای این منظور، کافی است دستور زیر را در ترمینال یا خط فرمان اجرا کنید:

pip install Pillow

پس از نصب، می‌توانید Pillow را در برنامه‌های پایتون خود import کنید:

from PIL import Image

باز کردن و نمایش تصاویر

برای باز کردن یک تصویر با استفاده از Pillow، از تابع Image.open() استفاده می‌کنیم. این تابع مسیر فایل تصویر را به عنوان ورودی دریافت می‌کند و یک شیء Image برمی‌گرداند که نمایانگر تصویر باز شده است.

img = Image.open("image.jpg")
img.show()

تابع img.show() تصویر را با استفاده از برنامه نمایش تصویر پیش‌فرض سیستم‌عامل نمایش می‌دهد.

مشخصات تصویر

شیء Image دارای ویژگی‌های مختلفی است که می‌توان از آن‌ها برای به دست آوردن اطلاعات مربوط به تصویر استفاده کرد. برخی از مهم‌ترین این ویژگی‌ها عبارتند از:

  • format: فرمت تصویر (مانند JPEG، PNG و غیره)
  • size: ابعاد تصویر (به صورت یک تاپل (عرض، ارتفاع))
  • mode: حالت رنگی تصویر (مانند RGB، L، CMYK و غیره)
  • width: عرض تصویر
  • height: ارتفاع تصویر

برای مثال:

print(img.format)
print(img.size)
print(img.mode)
print(img.width)
print(img.height)

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

یکی از رایج‌ترین عملیات پردازش تصویر، تغییر اندازه آن است. Pillow از تابع resize() برای این منظور استفاده می‌کند. این تابع ابعاد جدید تصویر را به عنوان ورودی دریافت می‌کند و یک شیء Image جدید با ابعاد مشخص شده برمی‌گرداند.

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

در این مثال، تصویر به ابعاد 200×150 پیکسل تغییر اندازه داده می‌شود.

برش تصویر

برای برش یک قسمت از تصویر، از تابع crop() استفاده می‌کنیم. این تابع یک تاپل به عنوان ورودی دریافت می‌کند که مختصات گوشه بالا سمت چپ و گوشه پایین سمت راست ناحیه برش را مشخص می‌کند.

cropped_img = img.crop((100, 50, 300, 200))
cropped_img.show()

در این مثال، ناحیه‌ای از تصویر که از مختصات (100, 50) شروع می‌شود و تا مختصات (300, 200) ادامه دارد، برش داده می‌شود.

چرخش تصویر

Pillow امکان چرخش تصاویر را نیز فراهم می‌کند. از تابع rotate() برای این منظور استفاده می‌شود. این تابع زاویه چرخش را به عنوان ورودی دریافت می‌کند (به درجه).

rotated_img = img.rotate(45)
rotated_img.show()

در این مثال، تصویر به اندازه 45 درجه در جهت عقربه‌های ساعت چرخانده می‌شود.

اعمال فیلترها

Pillow مجموعه‌ای از فیلترهای از پیش تعریف شده را برای اعمال جلوه‌های ویژه بر روی تصاویر ارائه می‌دهد. برخی از این فیلترها عبارتند از:

  • ImageFilter.BLUR: اعمال فیلتر بلور
  • ImageFilter.CONTOUR: اعمال فیلتر کنتور
  • ImageFilter.DETAIL: اعمال فیلتر جزئیات
  • ImageFilter.EDGE_ENHANCE: اعمال فیلتر تقویت لبه
  • ImageFilter.EMBOSS: اعمال فیلتر برجسته
  • ImageFilter.FIND_EDGES: اعمال فیلتر یافتن لبه
  • ImageFilter.SHARPEN: اعمال فیلتر تیز کردن
  • ImageFilter.SMOOTH: اعمال فیلتر صاف کردن

برای اعمال یک فیلتر، ابتدا باید ماژول ImageFilter را import کنید و سپس از تابع filter() استفاده کنید.

from PIL import ImageFilter
filtered_img = img.filter(ImageFilter.BLUR)
filtered_img.show()

در این مثال، فیلتر بلور بر روی تصویر اعمال می‌شود.

تغییر حالت رنگی تصویر

Pillow امکان تغییر حالت رنگی تصویر را نیز فراهم می‌کند. برای مثال، می‌توان یک تصویر رنگی را به تصویر سیاه و سفید تبدیل کرد.

gray_img = img.convert("L")
gray_img.show()

در این مثال، تصویر به حالت خاکستری (L) تبدیل می‌شود.

ذخیره تصاویر

پس از انجام عملیات پردازش تصویر، می‌توان تصویر را با استفاده از تابع save() ذخیره کرد. این تابع مسیر فایل و فرمت تصویر را به عنوان ورودی دریافت می‌کند.

img.save("new_image.png")

در این مثال، تصویر با فرمت PNG و با نام “new_image.png” ذخیره می‌شود.

کاربردها

Pillow در طیف گسترده‌ای از کاربردها مورد استفاده قرار می‌گیرد، از جمله:

  • ویرایش تصاویر
  • ایجاد تصاویر کوچک (thumbnails)
  • تبدیل فرمت تصاویر
  • اعمال جلوه‌های ویژه
  • پردازش تصاویر پزشکی
  • تشخیص اشیاء در تصاویر
  • بینایی ماشین

نتیجه‌گیری

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

بدون دیدگاه

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

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