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

图片批量加水印

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

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

步骤

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

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

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

glob(pattern_jpg, image_files);

读取到要进行处理的图片后,首先要对水印图片进行尺寸的变化,因为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);

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

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

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

效果图

下面附上一张效果图(如果觉得水印效果不明显的话,可以更改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
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值