opencv学习笔记1(图像融合)
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat headphoto = imread("touxiang.jpg");
namedWindow("头像");
imshow("头像", headphoto);
Mat headphoto2 = imread("touxiang.jpg");
Mat image = imread("6.jpg",1);
namedWindow("头像2");
imshow("头像2", headphoto2);
namedWindow("背景");
imshow("背景", image);
Mat imageROI;
imageROI = image(Rect(0,0, headphoto2.cols, headphoto2.rows));
addWeighted(imageROI, 0.5, headphoto2, 0.3, 0., imageROI);
namedWindow("混合图");
imshow("混合图", image);
imwrite("我做的混合图.jpg", image);
waitKey();
return 0;
}
Rect类: Rect(int_x,int_y,int_width,int_height)
addWeighted函数:
AddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double beta, double gamma, CvArr* dst );
src1 //第一个原数组.
alpha //第一个数组元素的权值
src2 //第二个原数组
beta //第二个数组元素的权值
dst //输出数组
gamma //添加的常数项。
函数 cvAddWeighted 计算两数组的加权值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
所以0.3和0.5分别代表两个图像在dst图像中占得比例,是由自己给定的,后面的0只是起一个微调作用。
可以让其中一个参数不变,调节另外一个参数的大小(0到1),然后观察生成结果的变化。