def manipulate_frame(self, frame_image, faces, index):
# Read images
dest = np.array(frame_image.convert('RGB'))
dest_faces = faces
mask = np.zeros(dest.shape, dtype = dest.dtype)
if len(self.source_faces) == 0:
for source in self.secondary_image:
output = io.BytesIO()
source.save(output, format="JPEG")
secondary_faces = self.get_faces(output.getvalue())
output.close()
converted_source = np.array(source.convert('RGB'));
for face in secondary_faces:
self.source_faces.append( (face, converted_source) )
j = 0
for dest_face in dest_faces:
(source_face, source_image) = self.source_faces[j % len(self.source_faces)]
try:
(dest, mask) = self.pasteOne(source_image, dest, source_face, dest_face, mask)
except Exception as e:
pass
j = j + 1
frame_image.paste(Image.fromarray(dest), mask=Image.fromarray(mask).convert('L').filter(ImageFilter.GaussianBlur(4)))
return frame_image
评论列表
文章目录