(一)线性混合操作

(二)相关API(addWeighted)
Void addWeighted(InputArray src1,
double alpha,
InputArray src2,
double beta,
double gamma,
outputArray dst)
参数1 :输入图像 Mat-sr1
参数2 : 输入图像sr1的alpha值
参数3 : 输入图像Mat-sr2
参数4 :输入图像sr2的alpha值
参数5 :gamma值
参数6 : 输出混合图像
注意 :两张图像的大小类型一致才可以
(代码部分)
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src1,src2;
src1 = imread("D:/picture/Namikaze Minato.jpg");
src2 = imread("D:/picture/Naruto.jpg");
if (src1.empty() || src2.empty()) //如果没有找到图片
{
printf("could not find picture.....\n");
return -1;
}
if ((src1.size() != src2.size()) || (src1.type() != src2.type()))
{
printf("these picture is not same......\n");
return -1;
}
namedWindow("input image1", CV_WINDOW_AUTOSIZE);
imshow("input image1", src1);
namedWindow("input image2", CV_WINDOW_AUTOSIZE);
imshow("input image2", src2);
double alpha = 0.3;
Mat dst;
addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
namedWindow("output image", CV_WINDOW_AUTOSIZE);
imshow("output image", dst);
waitKey(0); //等待
return 0;
}
实验效果

本文详细介绍了使用OpenCV进行图像线性混合操作的方法,通过addWeighted API实现两张图像的融合,展示了如何调整alpha和beta值来改变图像的透明度,并提供了一段完整的C++代码示例。
 -------图像混合&spm=1001.2101.3001.5002&articleId=104262703&d=1&t=3&u=146c113f3ddb4987b0e93595f439395a)
6285

被折叠的 条评论
为什么被折叠?



