forked from deepinsight/insightface
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinswapper_main.py
36 lines (29 loc) · 994 Bytes
/
inswapper_main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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)