iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
Software Development

【錢不夠買ps的我,只好用OpenCV來修圖了!】系列 第 15

【沒錢ps,我用OpenCV!】Day 15 - 進階修圖2,OpenCV 當然也有像 ps 圖層的功能! 什麼?圖片也能加減法?! Add, Subtract, AddWeighted

  • 分享至 

  • xImage
  •  

先來看看今天的結果圖

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 不過畢竟是基本運算,應該要存在的啦

Reference

https://blog.csdn.net/JNingWei/article/details/78241973

https://blog.csdn.net/qq_41895190/article/details/82905657


上一篇
【沒錢ps,我用OpenCV!】Day 14 - 進階修圖1,運用 OpenCV 顯示圖片直方圖、分離與合併RGB通道 show histogram, split, merge RGB channel
下一篇
【沒錢ps,我用OpenCV!】Day 16 - 進階修圖3,運用 OpenCV 幫助我們找圖片的輪廓(高斯模糊、Canny) cv2.GaussianBlur, cv2.Canny
系列文
【錢不夠買ps的我,只好用OpenCV來修圖了!】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言