عکس‌های خود را با استفاده از کد به طرح‌های هنری تبدیل کنید

تبدیل عکس به طرح مدادی با کدنویسیمنتشر شده در towardsdatascience به تاریخ ۲۵می ۲۰۲۱لینک منبع Turn Your Photos into Artistic Sketches with Codeدر این مقاله، من به شما نشان خواهم داد که چگونه عکس‌های خود را با استفاده از کد پایتون به قطعات هنری دستی تبدیل کنید. من به عنوان یک علاقه‌مند به هنر و تکنولوژی تصمیم گرفتم که هر دو حوزه را در یک پروژه ساده ترکیب کنم. این پروژه به شما نشان خواهد داد که برنامه‌نویسی تنها در مورد پیدا کردن راه‌حل برای مشکلات کدگذاری نیست. همچنین می توان از برنامه‌نویسی برای نشان دادن خلاقیت خود در عمل استفاده کرد، به عنوان مثال، با ایجاد آثار نقاشی شده با مداد.پس از کار بر روی این پروژه، شما نگرشی در مورد نحوه استفاده از OpenCV (کتابخانه بینایی کامپیوتر) در پروژه‌های پایتون خواهید داشت. امیدوارم بعد از خواندن این مقاله لذت ببرید و چیز جدیدی یاد بگیرید.بدون از دست دادن وقت، بیایید شروع کنیم!فهرست مطالب:پایتونآغاز کارمرحله ۱-تصویر را تعریف کنیدمرحله ۲-پیش‌پردازش تصویرمرحله ۳-رنگ کردن شبکهمرحله نهایی-صدور نتیجهتبدیل عکس به طرح مدادی با کدنویسیپایتونپایتون یک زبان برنامه‌نویسی با هدف کلی است که برای تجزیه و تحلیل داده‌ها روز به روز محبوب‌تر می‌شود. پایتون همچنین به شما این امکان را می‌دهد که به سرعت کار کنید و سیستم‌ها را موثرتر ادغام کنید. شرکت‌هایی از سراسر جهان از پایتون برای جمع‌آوری تکه‌های دانش از داده‌های خود استفاده می‌کنند. صفحه رسمی پایتون اگر می‌خواهید بیشتر یاد بگیرید.آغاز کاردر این پروژه، ما از دو کتابخانه پایتون استفاده خواهیم کرد. کتابخانه اصلی OpenCV است که یک پروژه شناخته‌شده بصری کامپیوتر است. و دومین کتابخانه‌ای که به آن نیاز داریم PIL است، که یک کتابخانه پردازش تصویر است.کتابخانه OpenCV (باز کردن مجدد صفحه نمایش رایانه)در اصل OpenCV یک کتابخانه نرم‌افزار آموزشی ماشین و دید کامپیوتری متن باز است. OpenCV به منظور ارائه یک زیرساخت مشترک برای کاربردهای بصری کامپیوتر و تسریع در استفاده از درک ماشین در محصولات تجاری ساخته شده‌است. OpenCV که یک محصول دارای مجوز BSD است، استفاده و اصلاح کد را برای کسب و کارها آسان می‌سازد.مرجع: https://opencv.orgنصب کتابخانه‌هاما می‌توانیم کتابخانه‌ها را با استفاده از pip، یک مدیر بسته / کتابخانه پایتون، نصب کنیم. پس از تکمیل نصب، می‌توانیم آن‌ها را وارد فایل پروژه خود کنیم.OpenCV به عنوان «opencv-pyton» و PIL به عنوان «pillow» نصب شده‌است.pip install opencv-python pillowوارد کردن کتابخانه‌هاحالا، ما می‌توانیم جلو برویم و ویرایشگر کد خود را باز کنیم. من در Jupyter Notebook کار خواهم کرد، با این حال برای استفاده از یک ویرایشگر کد متفاوت راحت باشید. من دوست دارم از نوت‌بوک برای این پروژه استفاده کنم چون برگشتن و دیدن تغییرات سریع‌تر آسان‌تر خواهد بود.import cv2 from PIL import Imageعالی است! حالا ما می‌توانیم به مرحله بعد برویم، جایی که تصویری را که می‌خواهیم به کارهای هنری طراحی‌شده با مداد تبدیل کنیم تعریف می‌کنیم.مرحله ۱- تصویر را تعریف کنیددر این مرحله، ما قصد داریم با اندازه‌گیری تصویری که می‌خواهیم از آن استفاده کنیم، شروع کنیم. و سپس، ما قصد داریم تصویر را وارد برنامه خود کنیم. اگر از اندازه تصویر راضی هستید، می‌توانید از این روند در حال تغییر صرف‌نظر کنید.شاید مطالعه مقاله اشتباهات رایج هنگام برخورد با پرونده‌های چندگانه پایتون برای شما مفید باشد.تغییر اندازه تصویراول، اجازه دهید اندازه اصلی تصویر را بررسی کنیم.image = Image.open('portrait.jpg') print(image.size)#Result (4000, 6000)حالا، اجازه دهید «اندازه آن را تغییر دهیم». من توصیه می‌کنم که نسبت ارتفاع به عرض را در هنگام تغییر اندازه یک‌سان نگه دارید. به این ترتیب، ما هیچ بخشی از عکس را از دست نخواهیم داد.resized_image = image.resize((800, 1200)) resized_image.save('resized_image.jpg')print(resized_image.size)#Result (800, 1200)خواندن تصویرما تصویر تغییر اندازه داده‌شده را در خط قبلی ذخیره کرده‌ایم. و اکنون ما آن را با استفاده از imread خواهیم خواند. اطمینان حاصل کنید که نام پرونده و فرمت فایل درست باشند. من آن را به عنوان img تعریف کرده‌ام، اما برای استفاده از یک نام متغیر دیگر راحت باشید.img = cv2.imread(‘resized_image.jpg’)مرحله ۲-پیش‌پردازش تصویرعالیه! بیایید با تصویر خود بازی کنیم. برای این که بتوانیم ظاهر نهایی طرح مدادی را به دست آوریم، تصویر ما باید یک روند را طی کند. شما می‌توانید آن را به عنوان یک لایه متفاوت از فیلترها در نظر بگیرید. ما از مدل‌های از پیش تعریف‌شده OpenCV استفاده خواهیم کرد.تبدیل به مقیاس خاکستریدر اینجا مستندات رسمی برای روش cvtColor آورده شده‌است.grayed = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)تصویر خاکستری شدهمعکوس کردن پیکسل هااین روند به پیدا کردن قسمت‌های سایه‌دار در عکس کمک می‌کند. سایه نقش مهمی در نقشه‌های طرح مدادی ایفا می‌کند. اگر می‌خواهید نحوه کار روش bitwise_not را یاد بگیرید، مستندات رسمی در اینجا آورده شده‌اند.inverted = cv2.bitwise_not(grayed)معکوس شدهاضافه کردن تاریدر اینجا مستندات رسمی روش GaussianBlur آورده شده‌است. GaussianBlur یک تصویر را با استفاده از یک فیلتر Gaussian محو می‌کند. این کار تاثیر طرح کلی را به کار هنری نهایی می‌دهد.blurred = cv2.GaussianBlur(inverted, (19, 19), sigmaX=0, sigmaY=0)تار شدهمرحله ۳-محو کردن شبکهوقت نمایش است! آیا آماده اید که ببینید نتیجه نهایی چگونه خواهد بود؟ در این مرحله، ما قصد داریم تصاویر خاکستری و مات را با هم ترکیب کنیم. برای انجام این عملیات، تابعی را برای ترکیب تصاویر می‌نویسیم.ترکیب تصاویر با OpenCV بسیار آسان است؛ ما از روش تقسیم استفاده خواهیم کرد. که اساسا مقادیر پیکسل تصویر را تقسیم می‌کند. شما آن را به عنوان یک فرآیند تقسیم ماتریس در نظر می‌گیرید.def blend(x, y): return cv2.divide(x, 255 - y, scale=256)حال، بیایید با عبور از تصاویری که می‌خواهیم ترکیب شوندذ، عملکرد را فراخوانی کنیم.final_result = blend(grayed, blurred)مرحله نهایی-صدور نتیجهکار ما تقریبا تمام شده است!بیایید نتیجه را صادر کنیم. ما از روش نگاشت برای ذخیره نتیجه به عنوان یک فایل تصویر در پوشه خود استفاده خواهیم کرد. به این ترتیب، ما می‌توانیم یک رکورد از کار نهایی داشته باشیم.cv2.imwrite(&quotmy_artwork.jpg&quot, final_result)عالی است! حالا، اجازه دهید نتیجه نهایی را با شما به اشتراک بگذارم. من شخصا شگفت‌زده شدم. بگذارید نظر شما را هم بدانم.نتیجهنتیجه نهایینتیجه‌گیریتبریک می‌گویم! ما با استفاده از پایتون، طرح مدادی را ایجاد کرده‌ایم که به شکل آثار هنری یک تصویر است. همانطور که قبلا گفتم، برنامه‌نویسی تنها در مورد حل مشکلات نیست. ما همچنین می‌توانیم از آن برای پروژه‌های سرگرم‌کننده و هنری مانند این استفاده کنیم. این نوع پروژه‌ها به شما کمک می‌کنند ایده‌های جدیدی برای اجرا پیدا کنید. OpenCV یکی از موارد مورد علاقه من در پروژه‌های بصری کامپیوتر است.امیدوارم از خواندن این مقاله لذت برده باشید و امروز چیز جدیدی یاد بگیرید. کار کردن بر روی پروژه‌های برنامه‌نویسی بهترین راه برای تقویت کردن مهارت‌های کدگذاری است.این متن با استفاده از ربات مترجم مقاله برنامه‌نویسی ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.