这里使用的较为简单的方式,直接使用的是文字作为水印
代码如下:
import os
from PIL import Image, ImageDraw, ImageFont
import numpy as np
os.makedirs('dataset\\watermarks\\train',exist_ok=True)
os.makedirs('dataset\\watermarks\\test',exist_ok=True)
locsi=np.random.randint(0,6,100000).tolist()#文本index
locsx=np.random.randint(10,200,100000).tolist()#随机产生x位置
locsy=np.random.randint(10,300,100000).tolist()#随机产生y位置
index=0
ls_train=os.listdir('dataset\\images\\train')
ls_test=os.listdir('dataset\\images\\test')
ls_train.sort()
ls_test.sort()
ls=['weibo','tencent','google','facebook','alibaba','twitter']#随机挑选一个内容作为水印
font = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 40)#加载系统字体
#train
for i in ls_train:
image = Image.open('dataset\\images\\train\\'+i)
draw = ImageDraw.Draw(image)
draw.text((locsx[index], locsy[index]),ls[locsi[index]],\
fill=(190, 190, 190), font=font)
index+=1
print(i)
image.save("dataset\\watermarks\\train\\"+i)
#test
for i in ls_test:
imageInfo = Image.open('dataset\\images\\test\\'+i)
draw = ImageDraw.Draw(imageInfo)
draw.text((locsx[index], locsy[index]),ls[locsi[index]],\
fill=(190, 190, 190), font=font)
index+=1
print(i)
imageInfo.save("dataset\\watermarks\\test\\"+i)
#imageInfo.show()