cv::addWeighted 与 cv::add类似而cv::addWeighted可以选择权重
下面看看cv::addWeighted的原型
CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1);
src1:一组输入数组(图像)
alpha:第一个数组元素的权值
src2:第二组输入数组(图像)
beta:第二个数组元素的权重
gamma:灰度系数,值越大图像越白
效果展示:
代码:
cv::Mat str1 = cv::imread("C:\\Users\\chuan\\Desktop\\picture\\22.jpg");
cv::Mat str2 = cv::imread("C:\\Users\\chuan\\Desktop\\picture\\33.jpg");
cv::namedWindow("test",cv::WINDOW_AUTOSIZE);
int alpha = 0;
int beta = 0;
int gamma = 0;
cv::createTrackbar("alpha","test",&alpha,100);
cv::createTrackbar("beta","test",&beta,100);
cv::createTrackbar("gamma","test",&gamma,255);
for(;;)
{
cv::Mat tmp3;
cv::Mat tmp1(str1, cv::Rect(0,0,640,480));
cv::Mat tmp2(str2, cv::Rect(0,0,640,480));
cv::addWeighted(tmp1, alpha/100.0f, tmp2, beta/100.0f, gamma, tmp3);
cv::imshow("test",tmp3);
if(cv::waitKey(100)==27)
break;
}