out_addr=opt.out_addr, **predictor_args) except ConnectionError as err: log(err) sys.exit(1) predictor.start() else: from afy import predictor_local predictor = predictor_local.PredictorLocal(**predictor_args) cam_id = select_camera(config) if cam_id is None: exit(1) cap = VideoCaptureAsync(cam_id) cap.start() avatars, avatar_names = load_images() enable_vcam = not opt.no_stream ret, frame = cap.read() stream_img_size = frame.shape[1], frame.shape[0] if enable_vcam: if _platform in ['linux', 'linux2']: try: import pyfakewebcam except ImportError: log("pyfakewebcam is not installed.")
predictor = predictor_local.PredictorLocal(**predictor_args) avatars = [] images_list = sorted(glob.glob(f'{opt.avatars}/*')) for i, f in enumerate(images_list): if f.endswith('.jpg') or f.endswith('.jpeg') or f.endswith('.png'): key = len(avatars) + 1 log(f'Key {key}: {f}') img = cv2.imread(f) if img.ndim == 2: img = np.tile(img[..., None], [1, 1, 3]) img = img[..., :3][..., ::-1] img = resize(img, (IMG_SIZE, IMG_SIZE)) avatars.append(img) cap = VideoCaptureAsync(opt.cam) cap.start() if _streaming: ret, frame = cap.read() stream_img_size = frame.shape[1], frame.shape[0] stream = pyfakewebcam.FakeWebcam(f'/dev/video{opt.virt_cam}', *stream_img_size) cur_ava = 0 avatar = None change_avatar(predictor, avatars[cur_ava]) passthrough = False cv2.namedWindow('cam', cv2.WINDOW_GUI_NORMAL) cv2.moveWindow('cam', 500, 250)