Example #1
0
def read_face():
    # 读取 某人 所有的人脸图像的数据,写入 person_X.csv
    faces = os.listdir(path_faces_rd)
    for person in faces:
        print(path_csv + person + ".csv")
        write_into_csv(path_faces_rd + person, path_csv + person + ".csv")

    # 存放所有特征均值的 CSV 的路径
    path_csv_feature_all = getRoad() + "\\data\\features_all.csv"
    # 存放人脸特征的csv的路径
    path_csv_rd = getRoad() + "\\data\\csvs_from_camera\\"
    with open(path_csv_feature_all, "w", newline="") as csvfile:
        writer = csv.writer(csvfile)
        csv_rd = os.listdir(path_csv_rd)
        print("特征均值: ")
        for i in range(len(csv_rd)):
            feature_mean = compute_the_mean(path_csv_rd + csv_rd[i])
            # print(feature_mean)
            print(path_csv_rd + csv_rd[i])
            writer.writerow(feature_mean)
Example #2
0
def read_face():
    # 读取 某人 所有的人脸图像的数据,写入 person_X.csv
    faces = os.listdir(path_faces_rd)
    for person in faces:
        print(path_csv + person + ".csv")
        write_into_csv(path_faces_rd + person, path_csv + person + ".csv")

    # 存放人脸特征的csv的路径
    path_csv_road = getRoad() + "\\data\\csvs_from_camera\\"
    addFaceToDb = InertFaceFeatures()

    csv_name = os.listdir(path_csv_road)
    print("特征均值: ")
    for i in range(len(csv_name)):
        feature_mean = compute_the_mean(path_csv_road + csv_name[i])
        feature_str = ','.join('%s' % id for id in feature_mean)  # 列表转字符串
        print(path_csv_road + csv_name[i])
        # print(csv_name[i],feature_str)
        addFaceToDb.insert(csv_name[i].replace('.csv', ''), feature_str)
# 摄像头实时人脸识别
# Real-time face recognition

import dlib  # 人脸处理的库 Dlib
import numpy as np  # 数据处理的库 numpy
import cv2  # 图像处理的库 OpenCv
import pandas as pd  # 数据处理的库 Pandas

from util.ProjectRoad import getRoad

# 人脸识别模型,提取128D的特征矢量
# face recognition model, the object maps human faces into 128D vectors
# Refer this tutorial: http://dlib.net/python/index.html#dlib.face_recognition_model_v1

facerec = dlib.face_recognition_model_v1(
    getRoad() + "\\dlib\\dlib_face_recognition_resnet_model_v1.dat")


# 计算两个128D向量间的欧式距离
# compute the e-distance between two 128D features
def return_euclidean_distance(feature_1, feature_2):
    feature_1 = np.array(feature_1)
    feature_2 = np.array(feature_2)
    dist = np.sqrt(np.sum(np.square(feature_1 - feature_2)))
    return dist


# 处理存放所有人脸特征的 csv
path_features_known_csv = getRoad() + "\\data\\features_all.csv"
csv_rd = pd.read_csv(path_features_known_csv, header=None)
Example #4
0
#   return_128d_features()          获取某张图像的128d特征
#   write_into_csv()                将某个文件夹中的图像读取特征并写入csv
#   compute_the_mean()              从csv中读取128d特征,并计算特征均值

import csv
import os

import cv2
import dlib
import numpy as np
import pandas as pd
from skimage import io

from util.ProjectRoad import getRoad

path_faces_rd = getRoad() + "\\data\\faces_from_camera\\"
path_csv = getRoad() + "\\data\\csvs_from_camera\\"
# detector to find the faces 探测器
detector = dlib.get_frontal_face_detector()
# shape predictor to find the face landmarks 加载预测器
predictor = dlib.shape_predictor(
    getRoad() + "\\dlib\\shape_predictor_5_face_landmarks.dat")
# face recognition model, the object maps human faces into 128D vectors 加载人脸识别模型
facerec = dlib.face_recognition_model_v1(
    getRoad() + "\\dlib\\dlib_face_recognition_resnet_model_v1.dat")


# 返回单张图像的128D特征
def return_128d_features(path_img):
    img = io.imread(path_img)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
import os
import shutil

import cv2  # 图像处理的库 OpenCv
# 进行人脸录入
# 录入多张人脸
import dlib  # 人脸识别的库 Dlib
import numpy as np  # 数据处理的库 Numpy

# Dlib 预测器
from util.GetInputBox import getInputGUI
from util.ProjectRoad import getRoad

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(
    getRoad() + '\\dlib\\shape_predictor_68_face_landmarks.dat')

# 创建 cv2 摄像头对象
cap = cv2.VideoCapture(0)

# cap.set(propId, value)
# 设置视频参数,propId 设置的视频参数,value 设置的参数值
cap.set(3, 480)

# 截图 screenshoot 的计数器
cnt_ss = 0

# 人脸截图的计数器
cnt_p = 0

# 存储人脸的文件夹