opencv copyto给图片加logo
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv copyto给图片加logo相关的知识,希望对你有一定的参考价值。
在Mat矩阵类的成员函数中copyTo(roi , mask)函数是非常有用的一个函数,尤其是后面的mask可以实现蒙版的功能,我们用几个实例来说明它的作用。我们要注意mask的数据类型,必须是CV_8U,且通道数或者是1,或者与roi一致。
使用画图来做logo
做一个黑色底图,写上红色的字,山高水长,存成1.png
另外找一副我们的主打图:
show me the code
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/video.hpp>
#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 写入主图
是不是很简单。
调整把logo放中间
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");
}
以上是关于opencv copyto给图片加logo的主要内容,如果未能解决你的问题,请参考以下文章
Python 给图片加文字或logo水印(附代码) | Python工具
opencv4opencv教程 C++ 4Mat对象(深拷贝:clone()copyTo(),create()创建图片,zeros()eye()初始化空白图像,Scalar()创建向量)