理论-线性混合操
其中 a 的取值范围为0~1之间
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
相关API (addWeighted)
参数1:输入图像Mat – src1
参数2:输入图像src1的alpha值
参数3:输入图像Mat– src2
参数4:输入图像src2的alpha值
参数5:gamma值 (校验调整值,如图像太暗,可通过此值增加亮度)
参数6:输出混合图像
注意点:两张图像的大小和类型必须一致才可以
代码演示:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(char argc,char** argv)
{
Mat myImage = imread("women.jpg", 1);
Mat kiss = imread("kiss.jpg", 1);
if (!myImage.data)
{
cout<< "couldn't load image..." << endl;
return -1;
}
if (!kiss.data)
{
cout << "couldn't load image..." << endl;
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input",myImage);
namedWindow("input1", WINDOW_AUTOSIZE);
imshow("input1",kiss);
Mat output;
output.create(myImage.size(),myImage.type());
double alpha(0.5), beta=1-alpha;
if (myImage.size() == kiss.size() && myImage.type() == kiss.type())
{
addWeighted(myImage,= alpha, kiss, beta, 0, output); //图片混合API
}
else
{
cout << "couldn't blend, because the size of image are not same..." << endl;
}
namedWindow("output", WINDOW_AUTOSIZE);
imshow("output", output);
waitKey(0);
return 0;
}
备注:以上内容转载笔者早期OneNote笔记,较多为图片格式,比较简陋。
后记:笔者才疏学浅,如有错误,望指出。