首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

OpenCV 影像融合:addWeighted 線性混合實作詳解

     編輯:關於C++

線性混合原理

兩張同尺寸、同型別影像逐像素加權相加:

α ∈ [0,1], β = 1 - α, γ = 0(常數項)。

OpenCV addWeighted 函式


void addWeighted(InputArray src1, double alpha,
                 InputArray src2, double beta,
                 double gamma, OutputArray dst);

實際計算:dst = α·src1 + β·src2 + γ

完整互動式範例程式


#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;

int main() {
    double alpha = 0.5, beta, input;
    Mat src1, src2, dst;

    std::cout << "Simple Linear Blender\n-----------------------\n";
    std::cout << "* Enter alpha [0-1]: "; std::cin >> input;
    if (input >= 0.0 && input <= 1.0) alpha = input;

    src1 = imread("zh.png");
    src2 = imread("zh2.png");
    if (!src1.data || !src2.data) { printf("Error loading images\n"); return -1; }

    beta = 1.0 - alpha;
    addWeighted(src1, alpha, src2, beta, 0.0, dst);

    namedWindow("Linear Blend", 1);
    imshow("Linear Blend", dst);
    waitKey(0);
    return 0;
}

結果展示

圖片 1:

圖片 2:

融合結果 (α=0.5):

注意事項

  • 兩圖必須同尺寸、同型別(通道數、深度一致),否則拋出例外。
  • α 控制 src1 權重,β 控制 src2,γ 可加入亮度偏移。
  • 適用於影像溶場、疊加熱力圖、水印融合等場景。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved