周末收到小伙伴来信:
于是总结了几种图像叠加的方法参考学习。
1,copyTo
代码语言:javascript复制 int main()
{
Mat x = imread("1.jpeg");
Mat y = imread("2.png");
Mat ROIx = x(Rect(10, 5, y.cols, y.rows));
y.copyTo(ROIx);
imshow("x", x);
waitKey(0);
mask(x,y);
return 0;
}
效果:
2,copyTo(mask)
代码语言:javascript复制bool mask(Mat srcImage,Mat logoImage)
{
Mat imageROI = srcImage(Rect(10, 5, logoImage.cols,logoImage.rows));
Mat mask = logoImage;
logoImage.copyTo(imageROI,mask);
imshow("copyImg",srcImage);
waitKey(0);
return true;
}
效果:
3,addWeighted(大小一致)
代码语言:javascript复制
bool addWeightedImg()
{
//alphaValue的大小就是值越小,第一张图片的参与感就越小,反之则越大,当我设置为0.1的时候就非常不明显了
double alphaValue = 0.5;
double betaValue;
Mat srcImage1, srcImage2, dstImage;
srcImage1 = imread("../addimg/2.png");
srcImage2 = imread("../addimg/1.png");
// --进行图像混合加权操作
betaValue = (1.0 - alphaValue);
addWeighted( srcImage1, alphaValue, srcImage2, betaValue, 0.0, dstImage);//必须保证两张图片大小一致
imshow("used",dstImage);
waitKey(0);
return true;
}
效果:
4,addWeighted(大小可以不一致,图像淡化)
代码语言:javascript复制bool addWeightedImg1()
{
Mat srcImage3 = imread("../copyimg/4.jpeg");
Mat logoImage = imread("../copyimg/1.jpeg");
Mat imageROI;
imageROI = srcImage3(Rect(200, 250, logoImage.cols, logoImage.rows));
addWeighted(imageROI, 0.5, logoImage, 0.3, 0., imageROI);//这里会将图像进行淡化操作
imshow("danhua",srcImage3);
waitKey(0);
return true;
}
效果: