资源简介

使用python3.6(64位)和Labview2019(64位)联合开发的人脸检测和人脸识别功能的demo。必须在windows(64位)系统上运行。同时,Labview必须安装VAS模块。小伙伴下载后,请先阅读readme.txt文件。

资源截图

代码片段和文件信息

#coding:utf-8
import dlib
import cv2
import os
import numpy as np


#获得当前项目的根目录——也就是当前脚本的目录的上一级目录
object_path = os.path.dirname(os.getcwd())

#导入正脸探测器(实例化)
detector = dlib.get_frontal_face_detector()
#导入人脸关键点识别器
predictor = dlib.shape_predictor(object_path + ‘/.py/model/shape_predictor_68_face_landmarks.dat‘)
#导入人脸识别模型
model = dlib.face_recognition_model_v1(object_path + ‘/.py/model/dlib_face_recognition_resnet_model_v1.dat‘)



class Test_face:
    def init(self):
        self.dist = []      #测试图像与已有图像特征的欧式距离列表
        self.face_rect = None
        self.name = None
    def test_face(selfphotoface_data):
        test_gray_img = cv2.cvtColor(photo cv2.COLOR_BGR2GRAY)
        #使用探测器识别每张图像中的人脸,形成一个人脸列表
        self.face_rect = detector(test_gray_img 1)
        #索引每一个人脸区域
        if len(self.face_rect) != 0:

            for i det in enumerate(self.face_rect):
                #获取每个人脸的68个特征点
                test_face_predictor = predictor(photo det)
                #获取每个人脸特征向量
                test_face_feature = model.compute_face_descriptor(photo test_face_predictor)
                #将数据类型转换为Numpy类型
                test_value = np.array(test_face_feature)
                #将测试图像的人脸特征向量和已知人脸特征向量求范数(范数还是没明白)
                for i in face_data[‘face_features‘]:
                    dist_ = np.linalg.norm(i - test_value)
                    self.dist.append(dist_)
                #将名字和计算的欧式距离组合为字典
                names_dist = dict(zip(face_data[‘names‘] self.dist))
                names_dist_sorted = sorted(names_dist.items() key=lambda x: x[1])
                # #debug
                # print(names_dist_sorted)
                #规定相识度不得小于0.4
                if names_dist_sorted[0][1] > 0.4:
                    self.name = ‘Unkonw‘
                else:
                    self.name = names_dist_sorted[0][0]
        return self.name
#一维转三维
def Transfor(a):
    flatNumpyArray = np.array(a)
    #重排数组为240*320行,4列的二维数组,另外只要前三列
    RGBimage = flatNumpyArray.reshape((240 * 320 4))[: :3]
    #c数组的大小必须和图像大小一致
    c = np.zeros(shape=(2403203)dtype=np.uint8)
    j = 0
    for i in range(240*320):
        if i%320 == 0:
            c[j] = RGBimage[i:i+320]
            j += 1
    return c
#人脸识别
def CatchPICFromVideo(arraymode_path):
    #导入已有模型数据
    face_data = np.load(mode_path)
    #定义实例对象
    recognition_face = Test_face()
    recognition_face.init()
    #一维转三维
    frame = Transfor(array)
    name = recognition_face.test_face(frameface_data)
    name = name.split(‘_‘)[0]
    return name




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-12-02 23:21  laview_and_python_face_recognition\
     目录           0  2019-12-04 20:23  laview_and_python_face_recognition\.py\
     文件        3131  2019-12-04 20:15  laview_and_python_face_recognition\.py\Face_recognition.py
     文件        4764  2019-12-04 19:43  laview_and_python_face_recognition\.py\Features.py
     文件          32  2019-12-02 21:28  laview_and_python_face_recognition\.py\img_name_data.txt
     目录           0  2019-12-02 20:31  laview_and_python_face_recognition\.py\model\
     文件    22466066  2019-11-13 19:58  laview_and_python_face_recognition\.py\model\dlib_face_recognition_resnet_model_v1.dat
     文件        4730  2019-12-02 21:28  laview_and_python_face_recognition\.py\model\face_model.npz
     文件    99693937  2019-11-12 21:31  laview_and_python_face_recognition\.py\model\shape_predictor_68_face_landmarks.dat
     文件        1131  2019-12-02 21:21  laview_and_python_face_recognition\.py\Sql.py
     目录           0  2019-12-04 20:22  laview_and_python_face_recognition\data\
     文件      528384  2019-12-04 20:22  laview_and_python_face_recognition\data\test.mdb
     目录           0  2019-12-04 20:21  laview_and_python_face_recognition\img\
     文件         446  2019-12-02 23:30  laview_and_python_face_recognition\readme.txt
     目录           0  2019-12-02 23:30  laview_and_python_face_recognition\vi\
     文件       11544  2019-12-02 14:16  laview_and_python_face_recognition\vi\1D_to_2D.vi
     文件       10215  2019-12-01 13:31  laview_and_python_face_recognition\vi\Max(ID).vi
     文件       94314  2019-12-03 23:53  laview_and_python_face_recognition\vi\主界面.vi
     文件       11696  2019-12-02 23:04  laview_and_python_face_recognition\vi\人脸识别.vi
     文件       44140  2019-12-02 11:02  laview_and_python_face_recognition\vi\信息.vi
     文件       20670  2019-12-02 11:12  laview_and_python_face_recognition\vi\始终包含VI路径修改.vi
     文件       10296  2019-11-30 22:32  laview_and_python_face_recognition\vi\特征提取.vi
     文件       10928  2019-12-01 13:25  laview_and_python_face_recognition\vi\相同工号个数.vi

评论

共有 条评论