当前位置:   article > 正文

Opencv&C++实现文件夹内图片批量加水印_添加水印 c++

添加水印 c++

图片批量加水印

有些情况下,我们需要给图片加上水印,而且可能不止一张图片。这个时候,我们就可以用程序来帮助我们完成任务。基本的思路也很简单:只需要将两张图片叠加在一起就可以了。读取整个文件参考了这篇不错的博文:opencv读取文件夹下的所有图片

注:本文中使用的水印图片会对原图有一定的影响,尤其黑色图片影响最大,正常情况下水印图片应该是透明的,想深究的话可以看这篇文章:OPENCV对于有alpha通道的透明背景图片的读取和图片叠加

步骤

首先读取要添加的水印图片

Mat logo_image = imread("F:/opencv/images/logo.png");//读取水印照片
  • 1

在这里插入图片描述
然后开始对要处理的文件夹进行读取,读取的时候
要使用的核心函数为(注意:只能处理文件夹中相同后缀名的图片,我在这里只处理了后缀名为.jpg的图片):

glob(pattern_jpg, image_files);
  • 1

读取到要进行处理的图片后,首先要对水印图片进行尺寸的变化,因为addWeighted函数只能叠加两张相同尺寸的图片

//将水印图片更改为与读取图片大小相同尺寸,以便进行下一步的线性相加
Mat logo_image_resize;
resize(logo_image, logo_image_resize, src.size());
	
//将两张图片进行线性相加
Mat mix_image;
addWeighted(src, 0.9, logo_image_resize, 0.1, 0, mix_image);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

给当前图片加好水印后,我们就可以将图片保存到我们指定的文件夹中:

//依次将加上水印后的图片存储到指定的文件夹中
string img_name = "F:/image/image" + to_string(i) + ".jpg";
imwrite(img_name, mix_image);
  • 1
  • 2
  • 3

然后继续循环,直到该文件夹内所有的图片都处理完毕。

效果图

下面附上一张效果图(如果觉得水印效果不明显的话,可以更改addWeighted函数中的相关参数):
在这里插入图片描述
我们处理好的图片都在我们指定的文件夹里了(o゚v゚)ノ:
在这里插入图片描述

源代码

下面附上源码(ノ*・ω・)ノ

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat logo_image = imread("F:/opencv/images/logo.png");//读取水印照片

	//读取文件中的图片
	string pattern_jpg;
	vector<String> image_files;
	pattern_jpg = "F:/opencv/images/*.jpg";
	glob(pattern_jpg, image_files);
	for (int i = 0; i < image_files.size(); i++){
		Mat src = imread(image_files[i]);

		//将水印图片更改为与读取图片大小相同尺寸,以便进行下一步的线性相加
		Mat logo_image_resize;
		resize(logo_image, logo_image_resize, src.size());
	
		//将两张图片进行线性相加
		Mat mix_image;
		addWeighted(src, 0.9, logo_image_resize, 0.1, 0, mix_image);

		//依次将加上水印后的图片存储到指定的文件夹中
		string img_name = "F:/image/image" + to_string(i) + ".jpg";
		imwrite(img_name, mix_image);
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/94288
推荐阅读
相关标签
  

闽ICP备14008679号