OpenCV addWeighted 圖像融合結果截圖

← INSIGHTS & PERSPECTIVES | 機器學習

OpenCV 圖像融合:使用 cv2.addWeighted 混合兩張圖片

說明 OpenCV cv2.addWeighted 的參數、權重概念、程式範例與兩張圖片尺寸限制。

OpenCV 的 cv2.addWeighted() 可以用權重混合兩張圖片。當兩張圖片尺寸相同時,開發者可以指定第一張圖片與第二張圖片的比例,產生透明疊加或融合效果。

cv2.addWeighted 是什麼?

cv2.addWeighted() 是 OpenCV 用來做加權影像融合的函數。輸出結果會依照兩張圖片的權重與 gamma 偏移值計算。

常見公式可以理解為:

result = src1 * alpha + src2 * beta + gamma

主要參數:

參數說明
src1第一個輸入圖像
alpha第一個輸入圖像的權重
src2第二個輸入圖像
beta第二個輸入圖像的權重
gamma加到結果上的亮度偏移

若想要兩張圖片各佔 50%,可以設定 alpha=0.5beta=0.5gamma=0

如何用 OpenCV 混合兩張圖片?

OpenCV 混合兩張圖片時,要先讀取圖片,再用 cv2.addWeighted() 指定權重。兩張圖片必須尺寸相同,否則會出現錯誤。

範例:

import cv2

# 讀取第一幅圖像
img1 = cv2.imread('image1.jpg')

# 讀取第二幅圖像
img2 = cv2.imread('image2.jpg')

# 將第一幅圖像的 50% 和第二幅圖像的 50% 相加
result = cv2.addWeighted(img1, 0.5, img2, 0.5, 0)

# 顯示結果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
OpenCV addWeighted 圖像融合結果

本文的實務判斷是:先確認圖片大小與通道數一致,再調整權重。若要做淡入淡出動畫,可以逐步改變 alphabeta

cv2.addWeighted 常見錯誤怎麼避免?

cv2.addWeighted() 最常見錯誤是兩張圖片尺寸不同或通道數不同。混合前先 resize 或轉換色彩通道,可以避免多數問題。

常見檢查:

print(img1.shape)
print(img2.shape)

若尺寸不同,可先調整:

img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))

若其中一張是灰階圖,另一張是彩色圖,需要先統一通道數。

常見問題

Qcv2.addWeighted 可以混合不同大小的圖片嗎?

cv2.addWeighted() 不能直接混合不同大小的圖片。混合前要先用 cv2.resize() 或裁切方式讓兩張圖片尺寸一致。

Qalpha 和 beta 一定要加起來等於 1 嗎?

alpha 和 beta 不一定要加起來等於 1,但加起來等於 1 時最容易得到直覺的透明混合效果。若總和超過 1,結果可能變亮或飽和。

Qgamma 參數有什麼用途?

gamma 是加到輸出結果上的亮度偏移。一般圖像融合常設為 0,除非需要整體調亮或調暗。

QaddWeighted 可以用來做浮水印嗎?

cv2.addWeighted() 可以用來做浮水印或透明疊圖。若只想混合局部區域,需要先建立 ROI 或遮罩。

QOpenCV 讀不到圖片怎麼辦?

cv2.imread() 回傳 None,通常是路徑錯誤、檔案不存在或格式不支援。先檢查檔案路徑與工作目錄。

參考資料

延伸閱讀

最後更新

Wed Dec 21 2022 08:00:00 GMT+0800 (Taiwan Standard Time)

關於作者

Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。

首次發布:2022-12-21