赞
踩
- from PIL import Image
- import random
- import numpy as np
- import os
- def Paste(img1,img2):
- # 加载底图
- base_img = Image.open(os.path.join('/home/lhq/PycharmProjects/untitled/datasets',img1))
- # 可以查看图片的size和mode,常见mode有RGB和RGBA,RGBA比RGB多了Alpha透明度
- # print base_img.size, base_img.mode
-
- # 加载需要P上去的图片
- tmp_img = Image.open(os.path.join('/home/lhq/PycharmProjects/untitled/yellow',img2))
- W,H,C = np.array(base_img).shape
- try:
- w = random.randint(1,W//2)
- h = random.randint(1,H//2)
- box = (w,h,w+100, h+100) # 底图上需要P掉的区域
- # 这里可以选择一块区域或者整张图片
- # region = tmp_img.crop((0,0,304,546)) #选择一块区域
- # 或者使用整张图片
- region = tmp_img
-
- # 使用 paste(region, box) 方法将图片粘贴到另一种图片上去.
- # 注意,region的大小必须和box的大小完全匹配。但是两张图片的mode可以不同,合并的时候回自动转化。如果需要保留透明度,则使用RGMA mode
- # 提前将图片进行缩放,以适应box区域大小
- region = region.resize((box[2] - box[0], box[3] - box[1]))
- region = region.rotate(random.randint(-45, 45)) # 对图片进行旋转
- base_img.save('dataset/{}.0.0.0.0.0.png'.format(img1.split('.')[0])) # 保存图片
- region = region.convert('RGBA')
- b,g,r,a = region.split()
- base_img.paste(region, box,mask=a)
- # base_img.show() # 查看合成的图片
- base_img.save('dataset/{}.{}.{}.{}.{}.1.png'.format(img1.split('.')[0],w,h,w+100,h+100,1)) #保存图片
- except:
- pass
-
- bj = os.listdir('/home/lhq/PycharmProjects/untitled/datasets')
- bj.sort(key=lambda x:int(x.split('.')[0]))
- for img1 in bj:
- qj = os.listdir('/home/lhq/PycharmProjects/untitled/yellow')
- for img2 in qj:
- Paste(img1,img2)

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。