| 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) |
|
|