laview_and_python_face_recognition.zip


使用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.pyFace_recognition.py
     文件        4764  2019-12-04 19:43  laview_and_python_face_recognition.pyFeatures.py
     文件          32  2019-12-02 21:28  laview_and_python_face_recognition.pyimg_name_data.txt
     目录           0  2019-12-02 20:31  laview_and_python_face_recognition.pymodel
     文件    22466066  2019-11-13 19:58  laview_and_python_face_recognition.pymodeldlib_face_recognition_resnet_model_v1.dat
     文件        4730  2019-12-02 21:28  laview_and_python_face_recognition.pymodelface_model.npz
     文件    99693937  2019-11-12 21:31  laview_and_python_face_recognition.pymodelshape_predictor_68_face_landmarks.dat
     文件        1131  2019-12-02 21:21  laview_and_python_face_recognition.pySql.py
     目录           0  2019-12-04 20:22  laview_and_python_face_recognitiondata
     文件      528384  2019-12-04 20:22  laview_and_python_face_recognitiondata est.mdb
     目录           0  2019-12-04 20:21  laview_and_python_face_recognitionimg
     文件         446  2019-12-02 23:30  laview_and_python_face_recognition
eadme.txt
     目录           0  2019-12-02 23:30  laview_and_python_face_recognitionvi
     文件       11544  2019-12-02 14:16  laview_and_python_face_recognitionvi1D_to_2D.vi
     文件       10215  2019-12-01 13:31  laview_and_python_face_recognitionviMax(ID).vi
     文件       94314  2019-12-03 23:53  laview_and_python_face_recognitionvi主界面.vi
     文件       11696  2019-12-02 23:04  laview_and_python_face_recognitionvi人脸识别.vi
     文件       44140  2019-12-02 11:02  laview_and_python_face_recognitionvi信息.vi
     文件       20670  2019-12-02 11:12  laview_and_python_face_recognitionvi始终包含VI路径修改.vi
     文件       10296  2019-11-30 22:32  laview_and_python_face_recognitionvi特征提取.vi
     文件       10928  2019-12-01 13:25  laview_and_python_face_recognitionvi相同工号个数.vi

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)