項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【OpenCV】15 – OpenCV 當然也有像 ps 圖層的功能! 什麼?圖片也能加減法?! Add, Subtract, AddWeighted

先來看看今天的結果圖

https://ithelp.ithome.com.tw/upload/images/20200927/20120424x81mjY3vxd.png

還是請我們的貓貓助教來幫忙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)

https://ithelp.ithome.com.tw/upload/images/20200927/20120424tMGPbcvMt6.png

OpenCV 的圖片加法

add_result = cv2.add(img, mask)

很好理解,就是一個簡單的加法,
這件事情所實現的算法是「將圖片上對應的每一個點都相加」,
也就是某一個點是 128(灰色) + 128(灰色) = 256(超過255 = 白)

所以可想而知,加上我們的灰色遮罩,整個都要白起來了!

https://ithelp.ithome.com.tw/upload/images/20200927/20120424XZEkrbdP0p.png

OpenCV 的圖片減法

add_result = cv2.subtract(img, mask)

這也是一樣的意思,就是一個簡單的減法,
這件事情所實現的算法是「將圖片上對應的每一個點都相減」,
例如某一個點是 200(偏白色) - 128(灰色) = 72(偏黑)

所以可想而知,減掉我們的灰色遮罩,整個都要黑起來了!

https://ithelp.ithome.com.tw/upload/images/20200927/20120424BGCklChvsd.png

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 的效果:

https://ithelp.ithome.com.tw/upload/images/20200927/20120424ltYdgBenr3.png

這個是圖片:灰色遮罩 = 8:2 的效果:

https://ithelp.ithome.com.tw/upload/images/20200927/20120424rhuLP8aiae.png

大家可以再自己慢慢調成自己喜歡的樣子囉!

當我們想要進行圖片疊加時,例如把某個人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 快速測試用程式碼)