ویرایش تصاویر با پایتون و Jupyter

حتما تا به حال زیاد شنیده اید که زبان پایتون یکی از محبوب ترین و پرکاربردترین زبان های برنامه نویسی دنیا است. اما دلیل آن را می دانید؟ دلیل این محبوبیت چیزی نیست جز نحو (Syntax) ساده و ابزار ها و کتابخانه های غنی. یکی از این کتابخانه ها در زمینه ویرایش تصاویر با پایتون که شاید تا به حال اسم آن را نشنیده باشید، کتابخانه Jupyter است.

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

نصب Jupyter

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

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

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

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

برای شروع کار خوب است تا اندازه تصویر را بدست آوریم:

که خروجی آن به شکل زیر است:

می بینید که اندازه تصویر خیلی بزرگ است. برای کوچک تر کردن ابعاد تصویر، از تابع ()resize استفاده می کنیم. کد زیر مقیاس تصویر مورد نظر را به 10 برابر کاهش می دهد.

تصویر به شکل زیر خواهد بود:

ویرایش تصاویر با پایتون

ویرایش تصاویر با پایتون

حالا نوبت به لبه های آن را مشخص کنیم. ما می خواهیم تصویر را تمیز کنیم تا برای رنگ آمیزی آماده شود. خوشبختانه Jupyter دارای الگوریتمی به نام تشخیص لبه است که کار ما را ساده می کند. تصویر بالا برای الگوریتم تشخیص لبه این کتابخانه مناسب به نظر می رسد.

کار بسیار ساده است. کافیست تا آرگومان ImageFilter.FIND_EDGES را به متد ()filter بدهیم:

خروجی به شکل زیر خواهد بود:

ویرایش تصاویر با پایتون

ویرایش تصاویر با پایتون

در این مرحله باید تمام جزئیات اضافی را از بین برده و خطوط واضحی بر جای می گذارد. رنگ تصویر کمی عجیب است اما مشکلی نیست. با استفاده از متد ()split تصویر را به نوار های رنگی تقسیم کرده و یکی از آن ها را انتخاب می کنیم:

خروجی:

تصویر حالا بهتر و واضح تر شده است. اما برای رنگ آمیزی خوب نیست زیرا پس زمینه آن سیاه است. تمام کاری که لازم است انجام دهیم این است که رنگ های آن را معکوس کنیم. پیکسل ها باید یا سفید کامل باشند و یا سیاه کامل. با استفاده از یک عبارت lambada این شرط را به متد ()point می فرستیم تا پردازش انجام شود:

خروجی:

تصویر نواحی اضافی زیادی دارد که باید آن ها را برش دهیم. با استفاده از متد ()cut تصویر مورد نظر خود را بیرون می آوریم:

خروجی:

حالا فقط باید از تصویر خروجی بگیریم. من آن را با فرمت PDF ذخیره می کنم تا برای چاپ راحت تر باشد:

کار ما تمام است!

QR:  ویرایش تصاویر با پایتون و Jupyter
به اشتراک بگذارید