wangzhibo
2025-07-31 c00e9454085ef3e96b98a1ded81aad6a3b95d849
auto_media_publisher/modifiers/face_swap/face_analyser.py
@@ -4,9 +4,7 @@
import numpy
from insightface.app import FaceAnalysis
from insightface.app.common import Face
from gfpgan.utils import GFPGANer
from .typing import Frame # 你已有定义
import numpy as np
SIMILAR_FACE_DISTANCE: float = 0.45     # < 0.4 同一人 0.4 -0.6 大概是同一人 >0.6 不是同一个
@@ -25,14 +23,14 @@
        else:
            return 'cpu'
        
    def get_many_faces(self,frame: Frame) -> Optional[List[Face]]:
    def get_many_faces(self,frame: np.ndarray) -> Optional[List[Face]]:
        try:
            return self._analyser.get(frame)
        except Exception as e:
            print(f"{e}")
            return None
    def get_one_face(self,frame: Frame, position: int = 0) -> Optional[Face]:
    def get_one_face(self,frame: np.ndarray, position: int = 0) -> Optional[Face]:
        many_faces = self.get_many_faces(frame)
        if many_faces:
            try:
@@ -42,7 +40,7 @@
        return None
    def find_similar_face(self,frame: Frame, reference_face: Face) -> Optional[Face]:
    def find_similar_face(self,frame: np.ndarray, reference_face: Face) -> Optional[Face]:
        many_faces = self.get_many_faces(frame)
        if many_faces:
            for face in many_faces: