需要做一个有感觉的网站?请让悠悠设计的设计师帮您来完成这个小目标 👉 立即点击
Python利用Opencv库进行人脸识别系统
使用快捷键Ctrl+D收藏本站,下次访问更方便哟!

Python利用Opencv库进行人脸识别系统

  • 更新时间:2023-03-05
  • 资源分类:源码 - Python源码
  • 资源编号:U1249
  • 资源发布:zwllh123

Python利用Opencv库进行人脸识别系统,利用cv2库里的CascadeClassifier函数做一个简易人脸识别系统 系统包括采集人脸信息 修改密码和一个识别成功启动项,可以一直跟着弹出框的提示进行每一步。

以下部分源码,完整源码请下载后学习使用。

    def __init__(self, filename):
        pygame.mixer.init()
        self.filename = filename
        self.path_main = Path.cwd()
        self.path_tem = Path.cwd() / 'tem_pic'
        self.path_face = Path.cwd() / 'face'
        self.music = pygame.mixer.Sound('sc.mp3')
        self.now_time = datetime.now()
        self.user_code = self._user_code()
        self.check_path = self._check_yn_path()
        self.file_number = self._count_file_number()
        self.face_train = self._face_train()
        self.face_cascade = cv.CascadeClassifier(self.filename)
        self.font = ImageFont.truetype('STXINWEI.TTF', 45)
        self.save_yf = True
        self.circle_lrh = True
        self.active = False
        self.active_1 = False
        self.active_2 = False
        self.active_3 = False
        self.active_4 = False
        self.active_5 = False
    def _user_code(self):
        with open(self.path_main / 'user_code.txt') as f:
            code = f.read()
        return code
    def _check_yn_path(self):
        if not self.path_tem.exists():
            os.makedirs(self.path_tem)
        if not self.path_face.exists():
            os.makedirs(self.path_face)
    def _count_file_number(self):
        fn = 0
        all_path = self.path_face.glob('*')
        for i in list(all_path):
            if i.is_dir():
                fn += 1
        return fn
    def _face_train(self):
        if self.file_number != 0:
            all_faces_label = self._face_data()
            ret = cv.face.EigenFaceRecognizer_create()
            if all_faces_label[0]:
                ret.train(all_faces_label[0], np.array(all_faces_label[1]))
                return ret
            else:
                return None
        else:
            return None
    def _face_data(self):
        faces = []
        labels = []
        all_face_data = os.listdir(self.path_face)
        for i in all_face_data:
            ii = self.path_face / i
            sb_face = os.listdir(ii)
            os.chdir(ii)
            for j in sb_face:
                img = cv.imread(j, 0)
                faces.append(img)
                labels.append(int(i))
        os.chdir(self.path_main)
        return [faces, labels]


收藏