در قسمت ششم از مجموعه آموزشی پردازش تصویر در پایتون، کار با عملگرهای تصویر را شروع کردیم، کمی در رابطه با تصاویر رنگی و سیاه و سفید و همچنین تفاوتهای آنها صحبت کردیم. و در نهایت با استفاده از اطلاعات بخشی از تصویر یا خواندن پیکسلهای بخشی از تصویر توانستیم بخشی از تصویر را برش بزنیم و به بخشی دیگر از تصویر منتقل کنیم.
در این قسمت دوباره کار با عملگرهای تصویر را ادامه داده و با استفاده از چندین دستور سعی میکنیم دو تصویر هم سایز را باهم ترکیب کنیم.
برای اینکه دو تصویر را ترکیب کنیم توجه داشته باشید که در وهلهی اول این دو تصویر باید هم سایز باشند. سپس هر کدام از تصاویر را میخوانیم و درون متغیری ذخیره میکنیم. و پس از آن روشهای زیر را امتحان میکنیم.
روش اول
با استفاده از عملگر + که در زبان پایتون شناخته شده است پیکسلهای دو تصویر با هم جمع میشوند و حاصل جمع پیکسلها در تصویر خروجی نمایش داده خواهد شد.
روش دوم
با استفاده از دستور add از کتابخانه opencv این کار را انجام خواهیم داد. این دستور دو ورودی دارد که ورودیها همان دو تصویر مورد نظر ما هستند. و این دستور فقط دو تصویر را از ما میگیرد و با استفاده از الگوریتمهای خاص خودش دو تصویر ما را ترکیب میکند.
روش سوم
با استفاده از دستور cv2.addWeighted از کتابخانه opencv این کار را انجام خواهیم داد. در این دستور چندین ورودی داریم که دو تا از ورودیها مربوط به دوتا عکس مورد نظر ما هستند و ورودیهای دیگر، همانطور که از اسم این دستور مشخص است مربوط به وزن هر کدام از تصاویر میباشند. این دستور با توجه به اینکه هر تصویر چه وزنی دارد، دو تصویر را ترکیب میکند و در خروجی نمایش میدهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import cv2 import numpy as np img1 = cv2.imread('image1.jpg') img2 = cv2.imread('image2.jpg') #add = img1 + img2 #add = cv2.add(img1, img2) add = cv2.addWeighted(img1,0.9, img2,0.3, 0) cv2.imshow('image1', img1) cv2.imshow('image2', img2) cv2.imshow('add', add) cv2.waitKey(0) cv2.destroyAllWindows() |
در زیر دو تصویر قبل از ترکیب شدن و بعد از ترکیب شدن حاصل از دستور cv2.addWeighted را مشاهده میکنید: