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工具

怎么给视频加动态logo水印?

在自己的照片上加水印 logo用啥软件?

opencv 模板匹配

opencv4opencv教程 C++ 4Mat对象(深拷贝:clone()copyTo(),create()创建图片,zeros()eye()初始化空白图像,Scalar()创建向量)

如何给二维码加上logo或图片?