Spaces:
Runtime error
Runtime error
File size: 1,556 Bytes
ec313eb |
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
from typing import List, Optional
from facefusion.hash_helper import create_hash
from facefusion.types import Face, FaceSet, FaceStore, VisionFrame
FACE_STORE : FaceStore =\
{
'static_faces': {},
'reference_faces': {}
}
def get_face_store() -> FaceStore:
return FACE_STORE
def get_static_faces(vision_frame : VisionFrame) -> Optional[List[Face]]:
vision_area = crop_vision_area(vision_frame)
vision_hash = create_hash(vision_area.tobytes())
if vision_hash in FACE_STORE['static_faces']:
return FACE_STORE['static_faces'][vision_hash]
return None
def set_static_faces(vision_frame : VisionFrame, faces : List[Face]) -> None:
vision_area = crop_vision_area(vision_frame)
vision_hash = create_hash(vision_area.tobytes())
if vision_hash:
FACE_STORE['static_faces'][vision_hash] = faces
def clear_static_faces() -> None:
FACE_STORE['static_faces'].clear()
def get_reference_faces() -> Optional[FaceSet]:
if FACE_STORE['reference_faces']:
return FACE_STORE['reference_faces']
return None
def append_reference_face(name : str, face : Face) -> None:
if name not in FACE_STORE['reference_faces']:
FACE_STORE['reference_faces'][name] = []
FACE_STORE['reference_faces'][name].append(face)
def clear_reference_faces() -> None:
FACE_STORE['reference_faces'].clear()
def crop_vision_area(vision_frame : VisionFrame) -> VisionFrame:
height, width = vision_frame.shape[:2]
center_y, center_x = height // 2, width // 2
vision_area = vision_frame[center_y - 16 : center_y + 16, center_x - 16 : center_x + 16]
return vision_area
|