没做出来,只能实现图片的叠加显示,去不掉背景。有待改进
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
//读入打开图像
Mat src1, src2,dst,mask;
src1 = imread("d:/gg.jpg");
if (src1.empty()) {
cout << "加载图像失败" << endl;
}
src2 = imread("d:/yj.png");
if (src2.empty()) {
cout << "加载图像失败" << endl;
}
mask= imread("d:/yj.png",128);
double alpha = 0.5;
if (src1.rows == src2.rows&&src1.cols == src2.cols&&src1.type() == src2.type()) {
addWeighted(src1, alpha, src2, (1 - alpha), 0.0, dst, -1);
//add(src1, src2, dst, Mat());//生硬相加
//multiply(src1, src2, dst,1.0,-1);//相乘
imshow("king", src1);
imshow("ten", src2);
namedWindow("output", WINDOW_AUTOSIZE);
imshow("output", dst);
}
else {
dst = src1(Rect(10, 10, src2.cols, src2.rows));
src2.copyTo(dst,mask);
namedWindow("output", WINDOW_AUTOSIZE);
imshow("output", src1);
}
waitKey(0);
return 0;
}