from PIL import Image
from PIL import ImageFilter
import cv2
import numpy as np
fg_path = 'img1.jpg'#前景图片
ma_path = 'mask.png'#前景图片的mask
bg_path = 'img2.jpg'#背景图片
fg = Image.open(fg_path).convert('RGB')
ma = Image.open(ma_path).convert("L")
bg = Image.open(bg_path).convert('RGBA')
# dilation = ma.filter(ImageFilter.MaxFilter(3))#膨胀
# erosion = ma.filter(ImageFilter.MinFilter(3))#腐蚀
# erosion.show()
empty = Image.new("RGBA", (fg.size), 0)
target = Image.composite(fg, empty, ma.resize(fg.size, Image.LANCZOS))
# target.show()
ma = ma.resize(bg.size, Image.ANTIALIAS)
target = target.resize(bg.size, Image.ANTIALIAS)
synth = Image.composite(target, bg, ma)
# synth.show()
synth = cv2.cvtColor(np.asarray(synth), cv2.COLOR_RGB2BGR)
# cv2.imshow("synth", synth)
# cv2.waitKey(0)
PIL根据黑白mask合成新的背景图片
最新推荐文章于 2022-10-13 17:24:24 发布