import datetime
import numpy as np
import os
import os.path as osp
import glob
import cv2
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image
assert insightface.__version__>='0.7'
if __name__ == '__main__':
初始化
app = FaceAnalysis(name='buffalo_l')
app.prepare(ctx_id=0, det_size=(640, 640))
swapper = insightface.model_zoo.get_model('inswapper_128.onnx', download=True, download_zip=True)
img = ins_get_image('t1')
faces = app.get(img)
faces = sorted(faces, key = lambda x : x.bbox[0])
assert len(faces)==6
source_face = faces[2]
res = img.copy()
for face in faces:
res = swapper.get(res, face, source_face, paste_back=True)
cv2.imwrite("./t1_swapped.jpg", res)
res = []
for face in faces:
_img, _ = swapper.get(img, face, source_face, paste_back=False)
res.append(_img)
res = np.concatenate(res, axis=1)
cv2.imwrite("./t1_swapped2.jpg", res)
参考: