Open Pin-Jiun opened 1 year ago
我們先建立一個我們今天用來輔助說明的遮罩: 我們將全部的值都設為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)
其實我們幾乎只會使用這個來修圖… 前面那兩個… 暫時想不到用法 這個就是真正遮罩的概念了!
我們使用 cv2.addWeighted 這個函數就能實現接近圖層的效果了!
cv2.addWeighted(img1, alpha, img2, beta, gamma)
當我們想要進行圖片疊加時,例如把某個人P圖到另外一張圖上,就是需要用到這個函數!
https://www.wongwonggoods.com/all-posts/python/python_opencv/opencv-add-subtract-addweighted/
我們先建立一個我們今天用來輔助說明的遮罩: 我們將全部的值都設為128,也就是灰色的一張圖片!
OpenCV 的圖片加法
很好理解,就是一個簡單的加法, 這件事情所實現的算法是「將圖片上對應的每一個點都相加」, 也就是某一個點是 128(灰色) + 128(灰色) = 256(超過255 = 白)
所以可想而知,加上我們的灰色遮罩,整個都要白起來了!
OpenCV 的圖片減法
這也是一樣的意思,就是一個簡單的減法, 這件事情所實現的算法是「將圖片上對應的每一個點都相減」, 例如某一個點是 200(偏白色) - 128(灰色) = 72(偏黑)
所以可想而知,減掉我們的灰色遮罩,整個都要黑起來了!
OpenCV 的圖層疊加 (設定透明度並疊加)
其實我們幾乎只會使用這個來修圖… 前面那兩個… 暫時想不到用法 這個就是真正遮罩的概念了!
我們使用 cv2.addWeighted 這個函數就能實現接近圖層的效果了!
cv2.addWeighted(img1, alpha, img2, beta, gamma)
當我們想要進行圖片疊加時,例如把某個人P圖到另外一張圖上,就是需要用到這個函數!
https://www.wongwonggoods.com/all-posts/python/python_opencv/opencv-add-subtract-addweighted/