5.2ROI区域图像叠加:
#include<opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
#include<iostream>
bool ROI_AddImage();
int main()
{
system("color 5E");
if (ROI_AddImage())
{cout << "ROI_AddImage" << "运行成功!" << endl; }
waitKey(0);
return 0;
}
bool ROI_AddImage()
{
Mat srcImage1 = imread("dch.jpg");
Mat logoImage = imread("wxr.jpg");
if (!srcImage1.data){
printf("读取错误!\n");
return false;
}
if (!logoImage.data){
printf("读取错误!\n");
return false;
}
cout << srcImage1.rows << "srcImage1 row" << endl;
cout << srcImage1.cols << "srcImage1 col" << endl;
cout << logoImage.rows << "logoImage row" << endl;
cout << logoImage.rows << "logoImage row" << endl;
Mat imageROI = srcImage1(Range(0, 0 + logoImage.rows),
Range(0, 0 + logoImage.cols));
Mat mask = imread("wxr.jpg", 0);
logoImage.copyTo(imageROI, mask);
/*首先对于openCv中copyTo()的用法有以下两种:
image.copyTo(imageROI)。作用是把image的内容复制粘贴到imageROI上;
image.copyTo(imageROI,mask)。 作用是把mask和image重叠以后把mask中像素值为0(black)的点对应的image中的点变为透明,而保留其他点
*/
namedWindow("叠加窗口");
imshow("叠加窗口", srcImage1);
return true;
}
程序执行结果如图;
5.2.3图片的线性混合操作:
#include<opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
#include<iostream>
bool LinearBlending();
int main()
{
system("color 5E");
if (LinearBlending())
{cout << "LinearBlending" << "运行成功!" << endl; }
waitKey(0);
return 0;
}
bool LinearBlending()
{
double alphaValue = 0.7;
double betaValue;
Mat srcImage1, srcImage2, dstImage;
srcImage1 = imread("dch.jpg");
srcImage2 = imread("10.jpg");
if (!srcImage1.data){
printf("读取错误!\n");
return false;
}
if (!srcImage2.data){
printf("读取错误!\n");
return false;
}
cout << srcImage1.rows << "srcImage1 row" << endl;
cout << srcImage1.cols << "srcImage1 col" << endl;
cout << srcImage2.rows << "logoImage row" << endl;
cout << srcImage2.rows << "logoImage row" << endl;
betaValue = (1.0 - alphaValue);
addWeighted(srcImage1, alphaValue, srcImage2, betaValue, 0.0, dstImage);
namedWindow("叠加窗口");
imshow("叠加窗口", dstImage);
imwrite("e.jpg", dstImage);
}
程序执行前图片:
程序执行结果如图: