在Mat矩阵类的成员函数中copyTo(roi , mask)函数是非常有用的一个函数,尤其是后面的mask可以实现蒙版的功能,我们用几个实例来说明它的作用。我们要注意mask的数据类型,必须是CV_8U,且通道数或者是1,或者与roi一致。
使用画图来做logo做一个黑色底图,写上红色的字,山高水长,存成1.png
另外找一副我们的主打图:
#include
#include
#include
#include
#ifdef _DEBUG
#pragma comment(lib,"opencv_world440d.lib")
#else
#pragma comment(lib,"opencv_world440.lib")
#endif
#include "calc_integrate.h"
using namespace cv;
using namespace std;
int main()
{
Mat img1 = imread("E:/zsh.jpg", 1);
Mat img2 = imread("E:/1.png", 1);
imshow("initial img1", img1);
Mat roi = img1(Rect(0, 0, img2.cols, img2.rows));
//Mat mask(roi.rows, roi.cols, roi.depth(), Scalar(0));
Mat mask(img2);
img2.copyTo(roi, mask);
imshow("img2", img2);
imshow("mask img1", img1);
waitKey();
return 0;
//calc_interate("bike55.bmp");
}
把1.png作为mask 写入主图 是不是很简单。
int main()
{
Mat img1 = imread("E:/zsh.jpg", 1);
Mat img2 = imread("E:/1.png", 1);
imshow("initial img1", img1);
int x, y;
x = img1.cols / 2 - img2.cols / 2;
y = img1.rows / 2 - img2.rows / 2;
Mat roi = img1(Rect(x, y, img2.cols, img2.rows));
//Mat mask(roi.rows, roi.cols, roi.depth(), Scalar(0));
Mat mask(img2);
img2.copyTo(roi, mask);
imshow("img2", img2);
imshow("mask img1", img1);
waitKey();
return 0;
//calc_interate("bike55.bmp");
}