先來看看今天的結果圖
還是請我們的貓貓助教來幫忙XDDDD
-> 此篇文章的程式碼 github
Day15_圖層圖片加減法_add_subtract_addweighted.ipynb
前言
基本修圖技能學習完之後,
再來我們要來學一些比較進階會使用的修圖技巧囉!
OpenCV 當然也有像 ps 圖層的概念!
我們先建立一個我們今天用來輔助說明的遮罩:
我們將全部的值都設為128,也就是灰色的一張圖片!
print("Create mask:")
# make all 128 channel
mask = np.full(img.shape, 128).astype(np.uint8)
show_img(mask)
OpenCV 的圖片加法
add_result = cv2.add(img, mask)
很好理解,就是一個簡單的加法,
這件事情所實現的算法是「將圖片上對應的每一個點都相加」,
也就是某一個點是 128(灰色) + 128(灰色) = 256(超過255 = 白)
所以可想而知,加上我們的灰色遮罩,整個都要白起來了!
OpenCV 的圖片減法
add_result = cv2.subtract(img, mask)
這也是一樣的意思,就是一個簡單的減法,
這件事情所實現的算法是「將圖片上對應的每一個點都相減」,
例如某一個點是 200(偏白色) - 128(灰色) = 72(偏黑)
所以可想而知,減掉我們的灰色遮罩,整個都要黑起來了!
OpenCV 的圖層疊加 (設定透明度並疊加)
overlapping82 = cv2.addWeighted(img, 0.8, mask, 0.2, 0)
OS: 其實我們幾乎只會使用這個來修圖… 前面那兩個… 暫時想不到用法
這個就是真正遮罩的概念了!
我們使用 cv2.addWeighted
這個函數就能實現接近圖層的效果了!
cv2.addWeighted(img1, alpha, img2, beta, gamma)
* img1: 圖片1
* alpha: 圖片1的透明度
* img2: 圖片2
* beta: 圖片2的透明度
* gamma: 常數,最後每個點再加上這個值。(正就是調亮、負就是調暗)
這個是圖片:灰色遮罩 = 5:5
的效果:
這個是圖片:灰色遮罩 = 8:2
的效果:
大家可以再自己慢慢調成自己喜歡的樣子囉!
當我們想要進行圖片疊加時,例如把某個人P圖到另外一張圖上,就是需要用到這個函數!
OS: 所以前面兩個功能…XD 不過畢竟是基本運算,應該要存在的啦
本文同步發佈在: 第 12 屆 iT 邦幫忙鐵人賽
【沒錢ps,我用OpenCV!】Day 15 – 進階修圖2,OpenCV 當然也有像 ps 圖層的功能! 什麼?圖片也能加減法?! Add, Subtract, AddWeighted
Reference
https://blog.csdn.net/JNingWei/article/details/78241973
https://blog.csdn.net/qq_41895190/article/details/82905657
⭐Python OpenCV 相關文章整理⭐: | |
---|---|
⭐基礎知識篇⭐: | |
1. | 【OpenCV】1 – 安裝 python OpenCV install 電腦中圖片的基本概念總整理 (附錄:OpenCV 快速測試用程式碼) |