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]
收藏