影像混合(Image Blending)是一種將兩張圖片依照特定比例融合的技術,
常用於影像合成、特效製作以及圖像過渡動畫。
OpenCV 提供 cv2.addWeighted()
方法,能輕鬆完成圖片的融合運算。
準備兩張相同尺寸的彩色圖片,例如 image1.jpg
和 image2.jpg
,放在同一資料夾中。
import cv2
import numpy as np
# 讀取兩張圖片
img1 = cv2.imread("image1.jpg")
img2 = cv2.imread("image2.jpg")
cv2.imshow("Image 1", img1)
cv2.imshow("Image 2", img2)
# 放最後面
cv2.waitKey()
cv2.destroyAllWindows()
💡 注意:
cv2.addWeighted()
要求兩張圖片的大小與通道數必須相同,
若不同,可用cv2.resize()
調整尺寸。
原圖示例:
cv2.addWeighted()
的公式為:
result = img1 * α + img2 * β + γ
三個範例:
# 圖像融合
blended1 = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)
blended2 = cv2.addWeighted(img1, 0.5, img2, 0.5, 0)
blended3 = cv2.addWeighted(img1, 0.3, img2, 0.7, 0)
cv2.imshow("Blended Image 1", blended1)
cv2.imshow("Blended Image 2", blended2)
cv2.imshow("Blended Image 3", blended3)
cv2.waitKey()
cv2.destroyAllWindows()
這裡用三種不同權重配置來做圖片融合,融合後的圖片如下:
我們還可以利用迴圈動態改變 α 與 β,產生圖片漸變效果:
for alpha in np.linspace(0, 1, 20):
beta = 1 - alpha
blended = cv2.addWeighted(img1, alpha, img2, beta, 0)
cv2.imshow("Dynamic Blend", blended)
cv2.waitKey(100) # 每張延遲 100ms
cv2.destroyAllWindows()
這種效果常用於淡入淡出(Fade In/Out)動畫或圖片切換。
cv2.addWeighted()
是影像融合的核心函數,簡單調整 α 與 β 即可控制融合比例。