|
from refacer import Refacer |
|
from os.path import exists |
|
import argparse |
|
import cv2 |
|
|
|
parser = argparse.ArgumentParser(description='Refacer') |
|
parser.add_argument("--force_cpu", help="Force CPU mode", default=False, action="store_true") |
|
parser.add_argument("--colab_performance", help="Use in colab for better performance", default=False,action="store_true") |
|
parser.add_argument("--face", help="Face to replace (ex: <src>,<dst>,<thresh=0.2>)", nargs='+', action="append", required=True) |
|
parser.add_argument("--video", help="Video to parse", required=True) |
|
args = parser.parse_args() |
|
|
|
refacer = Refacer(force_cpu=args.force_cpu,colab_performance=args.colab_performance) |
|
|
|
def run(video_path,faces): |
|
video_path_exists = exists(video_path) |
|
if video_path_exists == False: |
|
print ("Can't find " + video_path) |
|
return |
|
|
|
faces_out = [] |
|
for face in faces: |
|
face_str = face[0].split(",") |
|
origin = exists(face_str[0]) |
|
if origin == False: |
|
print ("Can't find " + face_str[0]) |
|
return |
|
destination = exists(face_str[1]) |
|
if destination == False: |
|
print ("Can't find " + face_str[1]) |
|
return |
|
|
|
faces_out.append({ |
|
'origin':cv2.imread(face_str[0]), |
|
'destination':cv2.imread(face_str[1]), |
|
'threshold':float(face_str[2]) |
|
}) |
|
|
|
return refacer.reface(video_path,faces_out) |
|
|
|
run(args.video, args.face) |
|
|