計算數組加權和:addWeighted
可實現兩個大小、類型均相同的數組(一般為 Mat 類型)按照設定權重疊加在一起。
void addWeighted(InputArray src1,double alpha,InputArray src2,double beta,double gamma,OutputArray dst,int dtype =-1);
- src1,需要加權的第一個數組,通常是一個 Mat。
- alpha,第一個數組的權重。
- src2,需要加權的第二個數組,需要和第一個數組擁有相同的尺寸和通道數。
- beta,第二個數組的權重。
- gamma,dst[i] = src1[i] * alpha + src2[i] * beta + gamma ; 通常設為 0。
- dst,輸出的數組,需要和輸入的兩個數組擁有相同的尺寸和通道數。
- dtype ,輸出陣列的可選深度,默認值為 -1。深度為數據存儲類型,有 8 位,16 位,32 位等等。
代碼示例:
#include<opencv.hpp>
using namespace cv; Mat srcImage1, srcImage2, dstImage; double alpha, beat; int alpha_value = 50;//接收控制條數值
void change_alpha(int, void*) { alpha = alpha_value / 100.0;//第一個數組權重
beat = 1.0 - alpha;//第二個數組權重
addWeighted(srcImage1, alpha, srcImage2, beat, 0.0, dstImage); imshow("合成圖", dstImage); } int main() { srcImage1 = imread("C:/Users/齊明洋/Desktop/3.jpg"); srcImage2 = imread("C:/Users/齊明洋/Desktop/4.jpg"); //創建控制條
namedWindow("Control"); createTrackbar("Alpha", "Control", &alpha_value, 100, change_alpha); waitKey(0); }
結果: