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

۱۱
۱۴۰۴/۱۱/۱۲
۲۲ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

کتابخانه Pillow در پایتون، نسخه گسترش‌یافته «Python Imaging Library) «PIL) است. این کتابخانه برای خواندن، ذخیره‌کردن، دستکاری و پردازش تصاویر در پلتفرم‌های مختلفی مانند ویندوز، لینوکس و مک مورد استفاده قرار می‌گیرد. پایتون، زبانی بسیار قدرتمند با سینتکس آسان و یادگیری ساده است. این زبان در بیشتر علوم و زمینه‌های آزمایشگاهی و تحقیقاتی، کاربرد دارد. دستکاری و پردازش تصاویر یکی از مواردی است که پایتون در آن بسیار خوب عمل می‌کند. برای این کار، کتابخانه‌های «Pillow» و «OpenCV» و «Scikit-image» و چند مورد دیگر ارائه شده‌اند.

آنچه در این مطلب می‌آموزید:
  • در این مطلب، ابتدا به طور کلی با کتابخانه Pillow و قابلیت‌های اصلی آن آشنا می‌شوید.
  • سپس کدهای مربوط به رسم چند شکل هندسی ساده به کمک ماژول Pillow را یاد می‌گیرید.
  • با چند مورد از فیلترهای کاربردی Pillow برای کار بر روی تصاویر آشنا می‌شوید.
  • با کمک بررسی چند مثال ساده‌ روش انجام عملیات رایج بر روی تصاویر را می‌آموزید.
  • روش اجرای وارونگی رنگ و لبه‌یابی را به صورت دستی و با کدنویسی یاد می‌گیرید.
  • متوجه می‌شود که چطور در پایتون هیستوگرام رنگ‌های تصویر را رسم کنید.
کتابخانه Pillow در پایتون برای پردازش تصویر – به زبان سادهکتابخانه Pillow در پایتون برای پردازش تصویر – به زبان ساده
فهرست مطالب این نوشته
997696

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

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

کتابخانه PIL در سال ۱۹۹۵ توسط آقای «فردریک لانچ» (Fredrik Lundh) برای انجام عملیات تخصصی بر روی تصاویر توسعه داده شد. بعد از او عده‌ای از برنامه نویسان توسعه این کتابخانه را ادامه دادند و نام آن را Pillow گذاشتند. این کتابخانه به صورت اوپن سورس، به وسیله زبان‌های «C» و «Python» نوشته شده است و سرعت مناسبی دارد. Pillow تقریبا از تمام فرمت‌های مهم تصویری پشتیبانی می‌کند. برای مثال می‌توان به «Png» و «Jpg» و غیره اشاره کرد.

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

این کتابخانه برای انجام وظایفی مانند پرازش تصویر، توانایی‌های ویژه‌ای دارد. بعضی از مهم‌ترین قابلیت‌های کتابخانه Pillow را در فهرست پایین نوشته‌ایم.

  • کار بر روی پیکسل‌های تصویر
  • شفافیت
  • فیلترگذاری بر روی تصاویر
  • لبه‌یابی
  • افزودن متن
  • افزودن کاراکتر‌های خاص به تصاویر
  • و غیر
چند مورد از قابلیت‌های کتابخانه Pillow در پایتون
چند مورد از قابلیت‌های کتابخانه Pillow در پایتون

برای نصب Pillow در پایتون می‌توانیم از دستور زیر در خط فرمان یا ترمینال سیستم عامل استفاده کنیم.

pip install Pillow

در بخش بعدی با مفهوم پردازش تصویر در کتابخانه Pillow آشنا می‌شویم.

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

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

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

  • RGB: این سیستم رنگ بر اساس سه رنگ اصلی «قرمز» (Red)، «سبز» (Green) و «آبی» (Blue) طراحی شده است.
  • CMYK: نام این سیستم رنگی مخفف «فیروزه‌ای» (Cyan)، «سرخ‌رنگ» (Magenta)، «زرد» (Yellow) و «مشکی» (Key) است. در این سیستم، رنگ‌ها با ترکیب این چهار رنگ اصلی ایجاد می‌شوند.
صورتک خندان در وسط به سه تصویر و کدهای برنامه نویسی در اطراف اشاره می‌کند. - کتابخانه Pillow در پایتون

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

  • JPG
  • PNG
  • GIF
  • BMP

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

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

چهار مفهوم اصلی درباره تصویر و پردازش آن وجود دارد.

  1. اگر داده ورودی به سیستم و خروجی از آن هر دو از نوع تصویر باشند، به این عملیات «پردازش تصاویر دیجیتال»‌ (Digital Image Processing) گفته می‌شود.
  2. اگر داده ورودی به سیستم از نوع تصویر باشد، اما داده‌های خروجی از آن توضیحات یا توصیفات متنی تصویر باشند به آن «بینایی ماشین» (Machine Vision) گفته می‌شود.
  3. اگر داده ورودی از نوع توضیحات و داده خروجی از سیستم تصویر باشد به آن «گرافیک کامپیوتر» (Computer Graphics) گفته می‌شود.
  4. اما اگر داده ورودی به سیستم از نوع توضیحات بوده و داده خروجی هم «توضیح» باشد، این فرایند به طور معمول در دسته «هوش مصنوعی» و یادگیری ماشین قرار می‌گیرد.
چهار مفهوم اصلی درباره تصویر و پردازش آن وجود دارد.
چهار مفهوم اصلی درباره تصویر و پردازش آن وجود دارد.

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

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

چطور با کمک فرادرس پردازش تصویر در پایتون را یاد بگیریم؟

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

مجموعه آموزش پردازش تصویر و بینایی ماشین با پایتون – جامع و کاربردی
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پردازش تصویر و بینایی ماشین با پایتون، هدایت شوید.

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

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

در بخش بعدی مطلب، روش رسم چند شکل هندسی ساده را با کمک کتابخانه Pillow بررسی می‌کنیم.

رسم اشکال هندسی

از کتابخانه Pillow هم می‌توانیم برای رسم اشکال هندسی در پایتون استفاده کنیم. البته با کمک کتابخانه‌های مختلفی می‌توان این کار را انجام داد. هر کتابخانه، کاربرد مخصوص به خود را دارد.

رسم دایره

در کادر پایین نمونه‌ای از اشکال هندسی ساده را با استفاده از Pillow رسم کرده‌ایم.

بعد از اجرای کدهای بالا خروجی پایین به عنوان تصویر نمونه ساخته خواهد شد. این تصویر در آدرسی ذخیره می‌شود که در لحظه اجرای اسکریپت کنسول پایتون آن را نشان می‌دهد.

شکل دایره رسم شده با کتابخانه Pillow در پایتون

توجه کنید که در خط دوم، سایز کلی بوم به اندازه ۲۰۰*۲۰۰ پیکسل تعیین شده است. در نتیجه نباید اندازه شکل بیش از این مقدار باشد، وگرنه چیزی در تصویر قابل تشخیص نخواهد بود.

رسم مستطیل

در کادر پایین می‌خواهیم مستطیل رسم کنیم. توجه کنید برای مشخص کردن رنگ داخل مستطیل دو روش مختلف وجود دارد.

  • هم می‌توانیم از نام رنگ به طور خاص استفاده کنیم.
  • هم اینکه برای رسیدن به نتیجه دقیق‌تر می‌توانیم کد رنگی متناسب با آن را بنویسیم.

در بخش قبل رنگ قرمز را با نام 'red'  تعریف کردیم. در این بخش از کد برای مشخص کردن رنگ استفاده می‌کنیم.

پارامتر quality  بر روی کیفیت مربوط به تصویر اثر می‌گذارد.

شکل مستطیل رسم شده با کتابخانه Pillow در پایتون

رسم بیضی با کتابخانه Pillow در پایتون

در کد پایین می‌خواهیم با کمک کتابخانه Pillow در پایتون، شکل بیضی رسم کنیم.

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

شکل بیضی رسم شده با کتابخانه Pillow در پایتون

رسم نقطه رنگی با کمک کتابخانه Pillow در پایتون

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

بعد از اجرای کدهای بالا، خروجی به صورت تصویر زیر ظاهر شده و ذخیره می‌شود.

تصویری از نقاط قرمز رنگ رسم شده با کتابخانه Pillow در پایتون

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

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

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

در جدول پایین، این عملیات را همراه با متدهای کاربردی و توضیح مختصر معرفی کرده‌ایم.

عملیاتمتد / ابزارتوضیح کوتاه
ذخیره همراه با تغییر فرمت تصویرsave()ذخیره تصویر با فرمت جدید
تغییر اندازه تصویرresize()تغییر عرض و ارتفاع تصویر
برش تصویرcrop()بریدن بخشی از تصویر با مختصات مشخص شده
چرخاندن تصویرrotate()چرخش تصویر با زاویه دلخواه
قرینه افقیFLIP_LEFT_RIGHTقرینه کردن از چپ و راست
قرینه عمودیFLIP_TOP_BOTTOMقرینه کردن از بالا به پایین
ساخت تصویر بندانگشتیthumbnail()ساخت نسخه کوچک تصویر
تغییر کیفیت تصویرsave(quality=…)کاهش یا افزایش کیفیت ذخیره
نوشتن متن روی تصویرImageDraw.text()درج متن با مختصات و رنگ
درج تصویر روی تصویرpaste()افزودن واترمارک یا لوگو

تمام عملیات جاری در این مطلب بر روی تصویر زیر اجرا خواهند شد.

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

تغییر فرمت عکس‌ها

یکی از رایج‌ترین عملیات بر روی عکس‌ها تغییر فرمت است. با این کار می‌توانیم قالب ذخیره‌سازی تصاویر مختلف را عوض کنیم. به کدهای پایین توجه کنید.

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

نکته: توجه کنید که برای باز کردن عکس از متد open()  استفاده کرده‌ایم. در این متد باید آدرس دقیق عکس داده شود. در اینجا چون فایل کدهای پایتون و عکس در داخل دایرکتوری یکسان قرار داشتند، فقط نام عکس را نوشتیم. اگر عکس در دایرکتوری به غیر از فایل کدها ذخیره شده بود، باید آدرس کامل آن را می‌نوشتیم.

تغییر اندازه عکس

برای تغییر اندازه عکس‌ها می‌توانیم از متد resize() استفاده کنیم. در کدهای پایین، اندازه عکس مورد نظر را کوچک‌تر کرده‌ایم.

بعد از نوشتن کدهای بالا، تصویر به شکل زیر نمایش داده می‌شود.

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

در فهرست پایین نکات مهم کد بالا را یادداشت کرده‌ایم.

  1. برای باز کردن تصویر از متد open()  استفاده کرده‌ایم.
  2. سپس با کمک متد resize() اندازه تصویر را کوچک‌تر کرده و آن را در متغیر new  قرار دادیم.
  3. از متد .show()  برای نمایش تصویر استفاده کردیم. تصویر بالا به دلیل استفاده از این متد ظاهر شده است.
  4. با کمک دستور print(new.size)  هم اندازه تصویر را در کنسول پایتون چاپ کردیم این مقدار به صورت (250, 250)  نمایش داده می‌شود. توجه کنید که این اندازه قبلا مشخص شده بود اما با کمک این متد می‌توانیم اندازه تصاویری را بدست بیاوریم که از از قبل اطلاعی درباره آن‌ها نداریم.
فلوچارت تغییر اندازه عکس با کتابخانه Pillow در پایتون
فلوچارت تغییر اندازه عکس با کتابخانه Pillow در پایتون

برش دادن عکس

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

نکات مهم کدهای بالا را در فهرست پایین نوشته‌ایم:

  1. در این کدها بعد از باز کردن عکس (خط ۲) و قرار دادن آن در متغیر image  کادر مورد نظر را (در خط ۳) برای برش مشخص کردیم. این کادر به صورت تاپلی در داخل متغیر box  ذخیره شده‌ است.
  2. سپس با کمک متد crop() تصویر را در داخل کادر مشخص شده برش زدیم.
  3. با کمک دستور show()  عکس زیر نمایش داده می‌شود.
  4. از دستور .convert('RGB')  برای تبدیل حالت عکس به RGB استفاده کرده‌ایم. اگر می‌خواستیم عکس را با فرمت PNG ذخیره کنیم نیازی به نوشتن این دستور نبود.
  5. در انتها هم عکس را در فرمت Croped_image.jpg  ذخیره کرده‌ایم.
تصویر برش خورده از مرد با پیراهن و کراوات آبی

با تغییر دادن اندازه box  می‌توانید تاثیر این اعداد را در تصویر برش داده شده مشاهده کنید.

چرخاندن تصویر

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

بعد از اجرای کدهای بالا تصویر زیر نمایش داده شده و سپس با نام rotated_image.jpg  در کامپیوتر ذخیره می‌شود.

تصویر ۴۵ درجه خلاف عقربه‌های ساعت چرخانده شده است

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

قرینه کردن تصویر

برای قرینه کردن تصویر می‌توانیم از متد transpose()  استفاده کنیم. این متد کاربردهای دیگری مانند چرخاندن ۱۸۰ درجه هم دارد. به منظور استفاده صحیح از آن باید با پارامتر‌های قابل پذیرش توسط متد transpose()  آشنا شوید.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

تصویر مرد در اتوبوس قرینه شده است.

در ضمن با تغییر دادن پارامتر متد transpose()  می‌توانیم این تصویر را بالا به پایین نیز قرینه بکنیم.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

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

ساخت تصویر بند‌ انگشتی یا Thumbnail

گاهی از اوقات برای ذخیره تصویر در پایگاه داده یا حتی نمایش آن در گوشه مطالب سایت و غیره لازم است که از نسخه بند‌انگشتی تصویر استفاده کنیم. با کمک کدهای زیر می‌توان نسخه «Thumbnail» از تصویر را ساخت.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

تصویر بند‌ انگشتی یا Thumbnail از مرد نشسته در اتوبوس

توجه کنید که قبل از ساخت تصویر بند‌انگشتی لازم است اندازه آن را مشخص کنیم. این کار با دستور max_size = (100,100)  انجام شده است. عبارت max_size  در اینجا اختیاری است. می‌‌توانیم هر مقداری به‌جای آن قرار بدهیم. اما اندازه باید به صورت تاپل و به پیکسل نوشته شود. حتی اگر بخواهیم اندازه تصویر با مستقیم به متد thumbnail() بدهیم باز هم باید آن را به شکل تاپل myimage.thumbnail((100,100))  بنویسیم.

تغییر کیفیت تصویر

برای تغییر دادن کیفیت عکس فقط کافی است که در زمان ذخیره‌سازی تصویر از پارامتر quality  استفاده کنیم. در کادر پایین، عکس اصلی را با ۴ کیفیت مختلف ذخیره کرده‌ایم.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

مرد نشسته در اتوبوس با رزولوشن 95
  • اگر از کد myimage.save('quality-25.jpg',quality = 25)  استفاده کنیم، تصویر به صورت زیر نمایش داده شده و ذخیره می‌شود.
مرد نشسته در اتوبوس با رزولوشن ۲۵
  • اگر از کد myimage.save('quality-5.jpg',quality = 5)  استفاده کنیم، تصویر به صورت زیر با کیفیت پایین‌تر نمایش داده شده و ذخیره می‌شود.
مرد نشسته در اتوبوس با رزولوشن 5
  • و اگر از کد myimage.save('quality-1.jpg',quality = 1)  استفاده کنیم، تصویر به صورت زیر با کمترین کیفیت نمایش داده شده و ذخیره می‌شود.
مرد نشسته در اتوبوس با رزولوشن 1

نوشتن متن بر روی تصویر

یکی دیگر از امکانات کتابخانه قدرتمند Pillow ‌نوشتن متن بر روی تصاویر است. شاید به نظر استفاده از نرم‌افزارهای ویرایش عکس برای این کار ساده‌تر باشد. اما اگر بخواهیم به صورت هم‌زمان بر روی صدها یا هزاران عکس برچسب (برای مثال تاریخ) بگذاریم بهترین کار استفاده از ابزارهای برنامه نویسی است. متنی را با کمک کدهای پایین بر روی تصویر مورد نظر نوشته‌‌ایم.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

نوشتن متن انگلیسی بر روی عکس

در کدهای بالا ابتدا تصویر را به ابزار ImageDraw  ارسال کرده‌ایم. در این ابزار با کمک متد text()  متن خود را بر روی عکس می‌نویسیم. این متد ۳ پارامتر دریافت کرده است.

  • پارامتر اول: مختصات متن است. با دستکاری آن می‌‌توانید متن خود را بر روی عکس جابه‌جا کنید.
  • پارامتر دوم: همان متنی است که باید نوشته شود.
  • پارامتر سوم: هم رنگ متن است.

درج عکسی بر روی عکس دیگر

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

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

چسباندن لوگوی فرادرس بر روی عکس مرد نشسته در اتوبوس

اعمال فیلتر بر روی تصاویر

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

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

نام فیلترکاربرد اصلینتیجه روی تصویر
SHARPENافزایش شفافیتظهور واضح‌تر جزئیات
SMOOTHکاهش نویزتصویر نرم‌تر
SMOOTH_MOREکاهش نویز بیشترجزئیات کمتر
MedianFilterحذف نویز با حفظ لبه‌هالبه‌ها حفظ می‌شوند.
EMBOSSبرجسته‌سازیحالت سه‌بعدی می‌شود.
BLURمحو کردنتصویر تار می‌شود.
ModeFilterکاهش نویز با حفظ لبهتصویر یکنواخت‌تر می‌شود.
CONTOURنمایش خطوط اصلیحالت طراحی با مداد
FIND_EDGESتشخیص لبه‌هالبه‌ها مشخص می‌شوند.
EDGE_ENHANCEتقویت لبه‌هالبه‌ها قوی‌تر می‌شوند.
Split()جدا کردن کانال‌هانمایش کانال‌های R و G و B
کشش کنتراستافزایش جزئیات پنهانوضوح جزئیات تصویر بیشتر می‌شود.

در تصویر پایین سه مورد از فیلترهای کتابخانه Pillow در پایتون را معرفی کرده‌ایم.

سه مورد از فیلترهای کتابخانه Pillow در پایتون
سه مورد از فیلترهای کتابخانه Pillow در پایتون

افزایش شفافیت با کمک کتابخانه Pillow در پایتون

برای افزایش شفافیت باید از فیلتر SHARPEN استفاده کنیم. توجه کنید که تمام الفبای این فیلتر باید با حروف بزرگ نوشته شود.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

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

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

بعد از اجرای کدهای بالا خروجی به شکل ۲ تصویر مختلف نمایش داده می‌شود. تصویر دوم نیز به صورت زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

عکس مرد نشسته در اتوبوس با شفافیت دوبرابر

فیلتر صاف کردن تصویر

این فیلتر با هدف حذف نویز از تصویر به کار برده می‌شود. باید توجه کرد که علاوه بر حذف نقاط رنگی و بی‌معنا ممکن است که جزئیات ظریف تصویر هم حذف شوند. برای صاف کردن تصویر از فیلتر SMOOTH (تمام حروف بزرگ) استفاده می‌کنیم.

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

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

برای صاف کردن دوباره می‌توانیم از فیلتر SMOOTH_MORE هم استفاده کنیم. مانند بخش بالا این کار باعث صاف شدن بیشتر تصویر می‌شود. حتی می‌توان از این فیلتر‌ها پشت سر هم نیز استفاده کرد.

فیلتر میانه

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

مهم‌ترین ویژگی فیلتر میانه این است که لبه‌های تصویر را صاف نمی‌کند. این لبه‌ها حفظ می‌شوند.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

تصویر با فیلتر median از مرد نشسته در اتوبوس

فیلتر Emboss

فیلتر EMBOSS، تصویر برجسته‌ای از عکس موجود می‌سازد. طوری که انگار تصویر به فضای سه‌بعدی منتقل شده است. این فیلتر سعی می‌کند به تصویر عمق بدهد.

بعد از اجرای کدهای بالا خروجی زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

تصویر طوسی با حالت سه بعدی با کمک کتابخانه Pillow در پایتون

فیلتر Blur

این فیلتر برای محو یا تار کردن تصویر به کار برده می‌شود. گاهی از اوقات لازم است بخش خاصی از تصویر به صورت تار شده نمایش داده شود. یا اینکه تصویر ابتدا به صورت تار نشان داده شود. در چنین شرایطی می‌توان از فیلتر BLUR استفاده کرد.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

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

فیلتر حالت

این فیلتر هم مانند فیلتر میانه از لبه‌های تصویر محافظت می‌کند. برای استفاده از این فیلتر باید عبارت ModeFilter را به کار ببریم.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

تصویر با فیلتر حالت از مرد نشسته در اتوبوس با کمک کتابخانه Pillow در پایتون

برای درک بهتر تغییرات اعمال شده توسط این فیلتر می‌توانیم آن را چند بار بر روی عکس اعمال کنیم. راحت‌ترین روش این کار استفاده از حلقه‌ها در پایتون است. برای مثال در کدهای زیر این فیلتر ۵ بار بر روی تصویر اصلی اعمال شده است.

بعد از اجرای کدهای بالا خروجی به شکل زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

تصویر بعد از چند مرحله اجرای فیلتر ModeFilter

در فهرست پایین، مراحل انجام کد بالا را نوشته‌ایم.

  1. خط ۱: ابتدا کلاس‌های Image  و ImageFilter را از کتابخانه Pillow وارد می‌کنیم.
  2. خط۲: سپس تصویر Bus-passenger.png را باز می‌کنیم.
  3. خط۳:‌ با استفاده از ModeFilter  فیلتر اولیه‌ای روی تصویر اعمال می‌کنیم.
  4. خطوط ۴ و ۵: در ادامه با کمک حلقه for ، همین فیلتر، چهار بار دیگر روی تصویر اعمال می‌شود. در نتیجه اثر آن قوی‌تر شود.
  5. خط ۶: بعد از پایان فیلترگذاری، تصویر نهایی با نام Filtered-Image-25.jpg ذخیره می‌شود.
  6. خط ۷: در آخر، تصویر فیلتر شده روی صفحه نمایش داده می‌شود.

تجزیه تصویر به رنگ‌های اصلی

با این روش می‌توان متوجه شد که تصویر موجود از چه کانال‌هایی تشکیل شده است. می‌دانیم که تصویر اصلی در این مطلب از فرمت PNG ساخته شده است و از سیستم رنگ RBG استفاده می‌کند. با کمک کدهای زیر می‌توانیم هر سه بخش تصویر را از هم جدا کرده و به شکل جداگانه ذخیره کنیم.

بعد از اجرای کدهای بالا خروجی به شکل‌های زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شوند.

  • تصویر در کانال قرمز به شکل زیر است.
تصویر مرد نشسته در اتوبوس در کانال قرمز
  • تصویر در کانال سبز به شکل زیر است.
تصویر مرد نشسته در اتوبوس در کانال سبز
  • تصویر در کانال آبی به شکل زیر نشان داده می‌شود.
تصویر مرد نشسته در اتوبوس در کانال آبی با کمک کتابخانه Pillow در پایتون

فیلتر Contour با کمک کتابخانه Pillow در پایتون

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

بعد از اجرای کدهای بالا خروجی زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

استفاده از فیلتر CONTOUR بر روی عکس

لبه یابی با کمک فیلتر FIND_EDGES

لبه‌یابی یکی از تخصصی‌ترین تکنیک‌های پردازش تصویر و بینایی ماشین است. در کتابخانه Pillow در پایتون ابزارهای مختلفی برای این کار وجود دارد. یکی از ساده‌ترین آن‌ها فیلتر FIND_EDGES است.

بعد از اجرای کدهای بالا خروجی به شکل‌ زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.
لبه یابی با کمک فیلتر FIND_EDGES

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

بعد از اجرای کدهای بالا تصویر زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

لبه یابی با کمک فیلتر FIND_EDGES

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

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

این تکنیک پیکسل‌ها را به شکلی تغییر می‌دهد که شدت رنگ در آن‌ها بیشتر شود. به این فرمول، فرمول عادی‌سازی تصویر گفته می‌شود.

lo=(liMINi)×(((MAXoMINo)/(MAXiMINi))+MINolo=(li-MINi)\times(((MAXo-MINo)/(MAXi-MINi))+MINo

تمام پارامتر‌های این فرمول را در فهرست پایین معرفی کرده‌ایم.

  • lo: مقدار پیکسل خروجی
  • li: مقدار پیکسل ورودی
  • MINi: کمترین پیکسل ورودی
  • MAXo: بیشترین پیکسل خروجی
  • MINo: کمترین پیکسل خروجی
  • MAXi: بیشترین پیکسل ورودی

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

با اجرای این کدها کنتراست تصویر زیر تغییر می‌کند. تصویر پایین قبل از اجرای تکنیک «کشش کنتراست» است.

تصویر جنگل مه‌آلود

تصویر زیر بعد از اجرای تکنیک کشش کنتراست است.

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

وارونگی رنگ با کتابخانه Pillow در پایتون

وارونگی رنگ ارتباطی با کانال رنگی تصویر ندارد. در این تکنیک با کالیبراسیون نتایج، همه کانال‌ها تصویر نهایی ساخته می‌شود. دو روش برای وارونگی رنگ در کتابخانه Pillow تعبیه شده‌اند.

  • روش اول استفاده از ماژول ImageChops  است.
  • روش دوم استفاده از فرمول‌های مخصوص این کار و پیاده‌سازی عملیات به صورت دستی است.

به تصویر زیر دقت کنید.

مرد نشسته در اتوبوس با رزولوشن 95

اکنون رنگ‌های تصویر بالا را با کمک ماژول ImageChops وارونه می‌کنیم.

بعد از اجرای کدهای بالا تصویر پایین بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

تصویر با رنگ وارونه شده.

اجرای دستی عملیات وارونگی رنگ

برای اجرای دستی وارونگی رنگ باید فرمول مربوط به این عملیات را خودمان برنامه نویسی کنیم. به این منظور لازم است کتابخانه Numpy را از قبل بر روی سیستم نصب کرده باشیم. در صورت نیاز به نصب این کتابخانه می‌توانید از دستور pip install numpy در خط فرمان استفاده کنید.

کتابخانه «Numpy» ابزار بسیار مناسبی برای کار بر روی آرایه‌های یک‌بعدی و چند بعدی است. این کتابخانه در محاسبات علمی و عددی بسیار به کار برده می‌شود.

بعد از اجرای کدهای بالا تصویر زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

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

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

در بخش بالا با فیلتر مخصوصی برای پیدا کردن لبه‌های تصویر آشنا شده‌ایم. در این بخش می‌خواهیم به صورت تخصصی‌تر این عملیات را انجام بدهیم. کتابخانه Pillow از هسته‌های ۳×۳ یا ۵×۵ پشتیبانی می‌کند. این هسته‌ها نوعی ماتریس دو بعدی هستند. برای اجرای این عملیات از هسته‌های کانولوشنی استفاده می‌کنیم.

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

بعد از اجرای کدهای بالا تصویر زیر بر روی صفحه نمایش ظاهر شده و در کامپیوتر ذخیره می‌شود.

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

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

  • پارامتر اول: سایز یا اندازه ماتریس که همیشه باید ۳×۳ یا ۵×۵ باشد.
  • پارامتر دوم: پارامتر دوم خود ماتریس مورد نظر است. این‌جا از ماتریس ۳×۳ استفاده کرده‌ایم.
  • پارامتر سوم: این پارامتر «Scale» است. هر مقداری که به این پارامتر بدهیم باقی پیکسل‌ها بر آن تقسیم می‌شوند. مقدار پیش‌فرض برای این پارامتر مجموع وزن هسته است.
  • پارامتر چهارم: این پارامتر نماینده «Offset» است که در این عملیات برابر با صفر قرار داده شده.
پارامتر‌های فیلتر Kernel در کتابخانه Pillow در پایتون
پارامتر‌های فیلتر Kernel در کتابخانه Pillow در پایتون

از آنجا که برای استفاده از هسته‌های کرنل، تصویر باید از سیستم‌های رنگی «L» یا «RGB» استفاده کند، با کمک دستور myImage = myImage.convert('L') سیستم رنگی عکس را به L  تغییر دادیم.

یادگیری کار با کتابخانه‌های پایتون به کمک فرادرس

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

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

برای مشاهده فیلم‌های بیشتر بر روی تصویر زیر کلیک کرده و به صفحه اصلی این مجموعه آموزش بروید.

مجموعه آموزش کتابخانه های پایتون – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش کتابخانه‌های پایتون از مقدماتی تا پیشرفته هدایت شوید.

هیستوگرام رنگ‌های تصویر

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

متد Histogram اطلاعات مربوط به تعداد رنگ در باندهای مختلف را نشان می‌دهد. اگر تصویر از نوع RGB باشد، برای هر کدام از کانال‌های رنگی قرمز، سبز و آبی، ۲۵۶ مقدار ممکن وجود دارد. در نتیجه، هر تصویر RGB می‌تواند در مجموع شامل ۷۶۸ مقدار رنگی یا نوع پیکسل متفاوت باشد. برای مثال می‌خواهیم تمام پیکسل‌های موجود در کانال قرمز از تصویر خودمان را چاپ بکنیم.

بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده می‌شود. در این خروجی ۲۵۶ پیکسل مختلف وجود دارد.

[171, 451, 590, 1020, 1793, 2232, 2582, 2596, 2351, 2478, 2248, 2335, 2229, 2244, 2048, 1986, 2051, 2028, 1952, 1753, 1881, 1722, 1768, 1704, 1725, 1577, 1579, 1543, 1491, 1448, 1419, 1294, 1217, 1158, 1063, 1114, 1085, 1028, 951, 921, 841, 944, 833, 789, 821, 793, 694, 570, 589, 551, 555, 557, 497, 506, 539, 542, 480, 550, 522, 513, 570, 556, 562, 512, 529, 521, 502, 542, 551, 551, 565, 541, 549, 606, 518, 476, 558, 556, 554, 603, 604, 538, 546, 510, 431, 527, 523, 518, 522, 483, 506, 468, 492, 500, 515, 527, 511, 500, 509, 465, 538, 552, 524, 563, 537, 552, 571, 542, 557, 523, 533, 535, 508, 566, 562, 550, 584, 553, 529, 576, 576, 547, 510, 517, 556, 592, 581, 569, 613, 582, 583, 627, 647, 619, 585, 670, 619, 652, 676, 736, 720, 774, 847, 875, 768, 762, 737, 615, 728, 681, 571, 509, 530, 471, 480, 447, 435, 410, 400, 413, 397, 468, 403, 343, 378, 359, 386, 364, 390, 336, 359, 320, 402, 434, 424, 425, 444, 442, 397, 418, 414, 411, 466, 468, 445, 449, 468, 445, 467, 475, 521, 498, 476, 507, 469, 419, 452, 456, 383, 406, 377, 410, 387, 459, 402, 375, 329, 347, 330, 292, 247, 268, 230, 196, 212, 210, 225, 231, 202, 199, 198, 143, 137, 116, 102, 94, 87, 92, 80, 48, 63, 64, 41, 36, 45, 48, 39, 41, 32, 16, 22, 16, 24, 9, 13, 13, 8, 4, 8, 5, 8, 7, 5, 5, 4, 1]

در این قسمت می‌خواهیم اطلاعات مربوط به رنگ‌های تصویر نمایش داده شوند. بهترین کار برای رسیدن به این هدف رسم نموداری از مقادیر پیکسل‌های کانال‌های رنگی مختلف است. به این منظور از کتابخانه Matplotlib استفاده می‌کنیم. این کتابخانه یکی از بهترین ابزارها برای رسم نمودار‌های گوناگون و جذاب بر روی انواع داده‌ها است. در صورت نیاز به نصب این ابزار می‌توانید از دستور pip install matplotlib در خط فرمان ویندوز یا ترمینال لینوکس استفاده کنید.

با کمک کدهای بالا نمودار تغییر رنگ پیکسل‌ها و تعدادشان را به شکل زیر رسم می‌کنیم.

هیستوگرام رنگ‌های تصویر با کمک کتابخانه‌های پایتون
متن‌های این تصویر در داخل کد بالا نوشته شده‌اند. ستون عمودی تغییرات تعداد پیکسل‌ها و ستون افقی مقدار رنگ هر پیکسل را نشان می‌دهد.

جمع‌بندی

در این مطلب از مجله فرادرس با کتابخانه Pillow آشنا شدیم. این کتابخانه نسخه مدرن و قدرتمندی از (Python Imaging Library | PIL) است. کتابخانه Pillow امکان خواندن، ذخیره و پردازش تصاویر در فرمت‌های متنوعی مانند JPG و PNG و GIF و غیره را با سرعت بالا فراهم می‌کند. در ضمن از طیف گسترده‌ای از عملیات پایه و پیشرفته نیز پشتیبانی می‌کند. برای مثال می‌توان به تغییر اندازه، برش، چرخش، قرینه‌سازی، ساخت Thumbnail، افزودن متن و واترمارک، اعمال فیلترهای گوناگونی مانند SHARPEN و BLUR و EMBOSS و CONTOUR و Edge Enhancement و Find Edges و جداسازی کانال‌های رنگی، وارونگی رنگ، لبه‌یابی با کرنل و رسم هیستوگرام اشاره کرد.

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

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
Faradars
PDF
مطالب مرتبط
نظر شما چیست؟

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