图像叠加操作(copyTo的使用方法)
1.代码部分
#include<iostream>
#include"opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char* argv[]) {
string path0 = "lena.png";
string path1 = "logo.png";
Mat src = imread(path0);
Mat dst = imread(path1);
cout << src.size() << endl;
cout << dst.size() << endl;
imshow("input_src1", src);
imshow("input_src2", dst);
Mat imageROI = src(Rect(0, 0, dst.cols, dst.rows));//在src中创建一个矩形区域
//注意dst.cols, dst.rows的大小不能超过src大小
Mat mask = imread(path1, 0);
imshow("grayout_put", imageROI);
dst.copyTo(imageROI, mask);
imshow("out_put", imageROI);
waitKey(0);
return 0;
}
2.函数介绍
-
Rect(int x, int y, int cols, int rows) 画一个矩形区域,矩形的左上角坐标为(x,y),型长宽分别为cols和rows。
-
copyTo()函数有两种表示方法。
(1)In_put.copyTo(out_put)。就是把In_put复制(copy to)到out_put。
(2)In_put.copyTo(out_put,mask)。则是不仅把In_put这张图复制(copy to)到out_put上,且In_put对应mask中像素值为0的像素点都不会贴到out_put上。
3.效果展示