در این قسمت تیم کدگیت را با آموزش ترکیب تصاویر در پایتون همراهی کنید. بسیاری از تصاویر امروز در روزنامهها، وبسایتها و … با کمک ترکیب یک یا چندین عکس بدست میآیند. در این جلسه با کمک کتابخانه opencv دو تصویر را ترکیب خواهیم کرد. پیشنهاد میکنیم پیش از مطالعه این جلسه، آموزشهای زیر را بررسی کنید:
- فیلم آموزش تصاویر و انواع نمایش آنها
- فیلم آموزش خواندن تصاویر در پایتون
- فیلم آموزش نوشتن تصاویر در پایتون
- فیلم آموزش رسم اشکال هندسی در پایتون
- آموزش مدل رنگی در پایتون
فراخوانی کتابخانهها
OpenCV یا همان Open Computer Vision مجموعه ای از کتابخانههای برنامهنویسی پردازش تصویر و یادگیری ماشین است. این کتابخانه با داشتن توابع مختلف در زمینه پردازش تصویر، فرآیندهای کار بر روی تصاویر را بسیار آسان نموده است.
برای پیاده سازی کد ترکیب تصاویر در پایتون از کتابخانه opencv استفاده خواهیم کرد. کد فراخوانی این کتابخانه به صورت زیر است:
import cv2
ترکیب تصاویر در پایتون
برای ترکیب تصاویر در پایتون از تابع addWeighted در پایتون استفاده میکنیم. فرمولی که این تابع برای ترکیب دو عکس استفاده میکند به صورت زیر است:
dst=α⋅image1+β⋅image2+γ
α و β بین صفر و یک است و نسبت تاثیر پیکسل هر عکس را نشان میدهد. دقت داشته باشید برای ترکیب تصاویر ما نیاز داریم تصاویر با سایز یکسان داشته باشیم. برای درک بهتر این موضوع چند مثال را با هم پیاده سازی میکنیم. دو لوگو ویندوز و لینوکس را میخواهیم با یکدیگر ترکیب کنیم:
برای خواندن تصاویر از کد زیر استفاده میکنیم:
im1 = cv2.imread('windows.jpg',1)
im2 = cv2.imread('linux.jpg',1)
با استفاده از کد زیر دو تصویر را هم سایز میکنیم:
width = im1.shape[1]
height = im1.shape[00]
im2 = cv2.resize(im2,(width,height))
حال با کمک addWeighted دو تصویر را ترکیب میکنیم:
blend_img = cv2.addWeighted(im1,.5,im2,.5,0)
ورودیهای تابع Addweighted به صورت زیر است:
- تصویر اول
- مقدار α (با توجه به فرمول بالا)
- تصویر دوم
- مقدار β
- مقدار γ
خروجی کد بالا به صورت زیر است:
در تصویر زیر مقدار α را برابر با 0.8 و مقدار β را را برابر با 0.2 قرار دادیم(لوگو لینوکس کمرنگ تر شده است).
در پایان اگر میخواهید تصویر خود را ذخیره کنید از کد زیر استفاده کنید:
cv2.imwrite('blendimage.jpg',blend_img)
اگر سوالی در خصوص این جلسه دارید در قسمت کامنت سوال خود را مطرح کنید تا پاسخگوی شما باشیم.