還是請我們的貓貓助教來幫忙XDDDD
Day15_圖層圖片加減法_add_subtract_addweighted.ipynb
基本修圖技能學習完之後,
再來我們要來學一些比較進階會使用的修圖技巧囉!
我們先建立一個我們今天用來輔助說明的遮罩:
我們將全部的值都設為128,也就是灰色的一張圖片!
print("Create mask:")
# make all 128 channel
mask = np.full(img.shape, 128).astype(np.uint8)
show_img(mask)
add_result = cv2.add(img, mask)
很好理解,就是一個簡單的加法,
這件事情所實現的算法是「將圖片上對應的每一個點都相加」,
也就是某一個點是 128(灰色) + 128(灰色) = 256(超過255 = 白)
所以可想而知,加上我們的灰色遮罩,整個都要白起來了!
add_result = cv2.subtract(img, mask)
這也是一樣的意思,就是一個簡單的減法,
這件事情所實現的算法是「將圖片上對應的每一個點都相減」,
例如某一個點是 200(偏白色) - 128(灰色) = 72(偏黑)
所以可想而知,減掉我們的灰色遮罩,整個都要黑起來了!
overlapping82 = cv2.addWeighted(img, 0.8, mask, 0.2, 0)
OS: 其實我們幾乎只會使用這個來修圖... 前面那兩個... 暫時想不到用法
這個就是真正遮罩的概念了!
我們使用 cv2.addWeighted
這個函數就能實現接近圖層的效果了!
cv2.addWeighted(img1, alpha, img2, beta, gamma)
圖片:灰色遮罩 = 5:5
的效果:圖片:灰色遮罩 = 8:2
的效果:大家可以再自己慢慢調成自己喜歡的樣子囉!
當我們想要進行圖片疊加時,例如把某個人P圖到另外一張圖上,就是需要用到這個函數!
OS: 所以前面兩個功能...XD 不過畢竟是基本運算,應該要存在的啦
https://blog.csdn.net/JNingWei/article/details/78241973
https://blog.csdn.net/qq_41895190/article/details/82905657