设定图像感兴趣的区域ROI,可将另一幅图片叠加到该区域;或者通过addWeight函数进行线性混合,下面是以上两种方法的示例:
#include<iostream>
#include<opencv2\opencv.hpp>using namespace std;
using namespace cv;
int main(int argc, int **argv) {
Mat src, logg;
src = imread("F:\\img\\dota2.jpg");
logg = imread("F:\\img\\dota_log02.jpg");
if (!src.empty()) {
cout << "src img opened error !" << endl;
}
if (!logg.empty()) {
cout << "logg img opened error !" << endl;
}
/* 方法一 */
Mat src02ROI = src(Range(20, 20 + logg.rows), Range(20, 20 + logg.cols));
//加载掩膜,必须是灰度图像
Mat mask = imread("F:\\img\\dota_log02.jpg", 0);
//将掩膜复制到ROI
logg.copyTo(src02ROI,mask);
namedWindow("srcROI");
imshow("log02", logg);
imshow("srcROI", src);
/* 方法二 */
Mat src01;
src01= imread("F:\\img\\dota1.jpg");
Mat log01 = imread("F:\\img\\dota_log01.jpg");
if (!src01.empty()) {
cout << "src01 img opened error !" << endl;
}
if (!log01.empty()) {
cout << "log01 img opened error !" << endl;
}
Mat src01ROI = src01(Range(20, 20 + log01.rows), Range(20, 20 + log01.cols));
double alptha = 0.4;
double beta = 0.6;
//Mat desImg = src.clone();
addWeighted(src01ROI, alptha, log01, beta, 0.0, src01ROI);
imshow("addWeighted src01", src01);
imshow("log01", log01);
waitKey(0);
return 0;
}