人脸识别打卡项目(4)

2023-11-14

目录

服务器打卡函数实现

 签到验证检测

百度人脸识别复用

总结


服务器打卡函数实现

打卡函数的主要工作流程如图所示。当启动开始签到后,调用打卡签到响应函数,启动人脸采集设 备,然后与百度人脸库注册的人脸进行对比,如果用户存在,返回用户姓名,并获取当前打卡时间,与 考勤设定时间进行对比,然后将姓名、工号和考勤信息写入到数据库;如果用户不存在,返回“打卡失 败”提示信息。

 由“开始签到”的响应函数调用,实现代码如下。

定义“开始签到”响应函数OnStartPunchCardClicked,代码实现如下。

def OnStartPunchCardClicked(self,event):
    self.start_punchcard.Enable(False)
    self.end_puncard.Enable(True)
    self.loadDataBase(2)
    _thread.start_new_thread(self.punchcard_cap,(event,))
    pass

 签到验证检测

签到验证主要用于实现对用户考勤状态的管理和查阅,读取存储到本地数据库的考勤状态信息,并在可 视化界面显示,主要由3个函数实现,一是数据库加载函数loadDataBase();二是查看考勤日志响应函数 OnOpenLogcatClicked();三是关闭日志响应函数OnCloseLogcatClicked()。

数据库加载函数loadDataBase的实现如下所示,结合上节课中SQLite的python操作方法实现:

import sqlite3


def loadDataBase(self,type):
    conn = sqlite3.connect("inspurer.db") # 建立数据库连接
    cur = conn.cursor() # 得到游标对象
    if type == 1:
    self.knew_id = []
    self.knew_name = []
    self.knew_face_feature = []
    cur.execute('select id,name,face_feature from worker_info')
    origin = cur.fetchall()
    for row in origin:
    print(row[0])
    self.knew_id.append(row[0])
    print(row[1])
    self.knew_name.append(row[1])
    print(self.convert_array(row[2]))
    self.knew_face_feature.append(self.convert_array(row[2]))
    if type == 2:
    self.attend_id = []
    self.attend_name = []
    self.attend_time = []
    self.attend_state = []
    cur.execute('select user_id,user_name,sign_in_time,checking_statefrom attendance')
    origin = cur.fetchall()
    for row in origin:
    print(row[0])
    self.attend_id.append(row[0])
    print(row[1])
    self.attend_name.append(row[1])
    print(row[2])
    self.attend_time.append(row[2])
    print(row[3])
    self.attend_state.append(row[3])
    pass

查看考勤日志响应函数OnOpenLogcatClicked()的实现如下所示,需要输出显示工号、姓名、打卡时间、 是否迟到等信息。

import wx

def OnOpenLogcatClicked(self,event):
    self.loadDataBase(2)
    grid = wx.grid.Grid(self,pos=(320,0),size=(600,500))
    grid.CreateGrid(100, 4)
    for i in range(100):
        for j in range(4):
            grid.SetCellAlignment(i,j,wx.ALIGN_CENTER,wx.ALIGN_CENTER)
    grid.SetColLabelValue(0, "工号") #第一列标签
    grid.SetColLabelValue(1, "姓名")
    grid.SetColLabelValue(2, "打卡时间")
    grid.SetColLabelValue(3, "是否迟到")

    grid.SetColSize(0,100)
    grid.SetColSize(1,100)
    grid.SetColSize(2,150)
    grid.SetColSize(3,150)

    grid.SetCellTextColour("NAVY")
    for i,id in enumerate(self.logcat_id):
        grid.SetCellValue(i,0,str(id))
        grid.SetCellValue(i,1,self.attend_name[i])
        grid.SetCellValue(i,2,self.attend_time[i])
        grid.SetCellValue(i,3,self.attend_state[i])
    pass

关闭日志响应函数OnCloseLogcatClicked()如下所示。

def OnCloseLogcatClicked(self,event):
    self.initGallery()
    pass

百度人脸识别复用

介绍了人脸识别的实现过程,主要包括人脸注册和人脸搜索2个步骤,在此项目中,我们 需要对人脸注册和人脸搜索进行封装,实现对人脸识别各模块的复用。当新用户进行注册录入时,调用 人脸注册模块;当进行打卡签到时,调用人脸搜索模块,将打卡用户的人脸图像在人脸库中搜索,如在 人脸库中存在,返回用户姓名,如不存在,用户姓名为空。

人脸注册模块的封装,基本流程是采集人脸图像,注册至人脸库,注册成功返回True,否则,返回 False。

import requests
import base64

def face_register(path,user_id):
    f = open(path,'rb')
    image = base64.b64encode(f.read())
    request_url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add"
    params = {'image':image,
    'image_type':'BASE64','group_id':'vip','user_id':user_id,'quality_control':'LOW'
    }
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/json'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        return True
    else:
        return False

人脸搜索模块的封装,基本流程是读取人脸图像,搜索人脸库中图像并进行对比,如果返回值中用户对 比置信度“score”大于80,则返回该用户的“user_id”,否则返回空值。

import requests
import base64

def face_retrieve(imagePath):
    request_url = "https://aip.baidubce.com/rest/2.0/face/v3/search"
    f = open(imagePath,'rb')
    image = base64.b64encode(f.read())
    params = {'image':image,
    'image_type':'BASE64','group_id_list':'vip','quality_control':'NONE'}
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/json'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        result = response.json()
    if result['result']['user_list'][0]['score'] >= 80:
        name = result['result']['user_list'][0]['user_id']
    else:
        name = " "
    return name

总结

本节课我们学习了服务器打卡函数实现, 签到验证检测,百度人脸识别复用的相关内容。下节课我们将学习实现所以项目需要的软件的安装的相关内容。我会带着大家一起完成人脸识别打卡项目的所有内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人脸识别打卡项目(4) 的相关文章

  • 为什么这些双精度数的返回值为-1.#IND?

    I have double score cvMatchContourTrees CT1 CT2 CV CONTOUR TREES MATCH I1 0 0 cout lt
  • brew 链接 jpeg 问题

    我正在尝试安装opencv在 Mac OSX Lion 上 brew install opencv 我收到以下错误 以及其他一些类似的错误 Error The linking step did not complete successful
  • 计算两个描述符之间的距离

    我正在尝试计算已计算的两个描述符之间的距离 欧几里得或汉明 问题是我不想使用匹配器 我只想计算两个描述符之间的距离 我正在使用 OpenCV 2 4 9 并且我的描述符存储在 Mat 类型中 Mat descriptors1 Mat des
  • OpenCV:视频结束后如何重新启动?

    我正在播放视频文件 但播放完毕后如何再次播放 Javier 如果您想一遍又一遍地重新启动视频 也称为循环播放 可以通过在帧数达到时使用 if 语句来实现cap get cv2 cv CV CAP PROP FRAME COUNT 然后重置帧
  • Python:opencv warpPerspective 既不接受 2 个也不接受 3 个参数

    我发现单应矩阵如下特征匹配 单应性教程 https docs opencv org 3 4 1 d1 de0 tutorial py feature homography html using M mask cv2 findHomograp
  • 如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

    我在尝试从我的新 GoPro Hero 4 相机捕获实时流并使用 openCV 对其进行一些图像处理时遇到麻烦 这是我的试用 创建的窗口上没有显示任何内容 import cv2 import argparse import time imp
  • Python中最相似的人脸识别

    如何使用Python和OpenCV来查找面部相似 我已成功使用 OpenCV 和 Python 使用 Haar Cascades 从多张照片中提取人脸 我现在有一个图像目录 所有这些都是不同人的面孔 我想做的是拍摄一张样本图像 然后看看它最
  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • 如何将输出视频保存到 OpenCV 中的文件中

    我想将输出视频保存到文件中而不是显示它并尝试使用 cvcaptureimage 但仍然无法获得结果 include
  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 从图像坐标获取对象的世界坐标

    I have been following this http docs opencv org modules calib3d doc camera calibration and 3d reconstruction html docume
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • OpenCV Mat 和 Leptonica Pix 之间的转换

    我需要在 C 中在 OpenCV Mat 图像和 Leptonica Pix 图像格式之间进行转换 这用于 8 位灰度图像的二值化 我发现发现了 ikaliga的回答 https stackoverflow com a 25929320 2
  • 如何在 cv2.VideoWriter 中使用 FPS 参数?

    好的 所以我正在制作视频 我想确切地知道如何使用 FPS 参数 它是一个浮点数 所以我假设这是我想要的每帧之间的间隔 你能给个例子吗 我只想知道视频会如何随着 FPS 参数值的变化而变化 因为我制作的视频现在太快了 谢谢 确实只是这样 fr
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • BRISK 特征检测器检测零个关键点

    下面显示的 Brisk 探测器没有给我任何关键点 有人可以提出一个问题吗 我将尝试用一些代码解释我在下面所做的事情 include opencv2 features2d features2d hpp using namespace cv u

随机推荐

  • 【千律】C++基础:类定义和类实现的分离

    类定义就是指定义类名 是 h文件 类实现是指对类定义的具体实现 是 cpp文件 下面是Student h中的内容 pragma once include
  • frc机器人比赛主题_参加了十几场机器人竞赛后,我才敢告诉你:怎样做到不“踩坑”?...

    在决定参加比赛之前 先问自己为什么 为什么要先聊这一点 因为这个问题会决定你的很多选择 很多家长会先去看那个 果 比如 比赛获奖有没有用 这个比赛含金量如何 但是这个 因 是每个家长要先问自己的 你是不是认同机器人竞赛是对孩子综合能力的提升
  • 2000端口号的坑

    这两天对接某游戏的充值接口的时候碰到一个恶心的问题 公司机器和服务器请求游戏方2000端口号的时候 死活获取不到返回No Response 但是同一个请求串外网环境都是正常的 经多次和游戏方你来我往之后发现 2000端口默认是sccp协议
  • 2W字长文吐血整理 Docker&云原生

    Docker 和 云原生 一 概念介绍 1 1 Docker Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows操作系统的机器上 也可以实现虚拟
  • React 应用的 Nginx 缓存控制

    典型 React 应用面临的缓存问题 可通过 Nginx 配置进行解决 通用部署 构建应用后 只需使用 Nginx 指向静态文件即可 server listen 80 root PATH TO APP build try files uri
  • 爬虫碎碎念

    20230304 非专业人士 简单记录自己的需求和思考 0 引言 平时看到一些网站的照片什么的 有那种批量下载的需求 当然有些也是视频网站的图片介绍什么的 也即是说 我需要把这些网站的照片批量下载下来 以前的时候 写过简单的爬虫 因为需求比
  • Docker——搭建ELK

    安装Elasticsearch 1 拉取镜像 docker box home box docker pull elasticsearch 7 14 2 2 在宿主机准备配置文件 创建目录 docker box mkdir p server0
  • 资源list:Github上关于大数据的开源项目、论文等合集

    Awesome Big Data A curated list of awesome big data frameworks resources and other awesomeness Inspired byawesome php aw
  • 注释转换(C->C++)

    转换原理图解 基于上图原理 可以写出代码 主函数 define CRT SECURE NO WARNINGS 1 include
  • Jenkins从配置到实战(二) - Jenkins的Master-Slave分布式构建

    前言 Jenkins的Master Slave分布式构建 就是通过将构建过程分配到从属Slave节点上 从而减轻Master节点的压力 而且可以同时构建多个 有点类似负载均衡的概念 简单理解就是 将Jenkins服务器上的构建任务分配到其他
  • 数据采集专家----4通道AD采集子卡推荐

    FMC136是一款4通道250MHz采样率16位AD采集FMC子卡 符合VITA57规范 可以作为一个理想的IO模块耦合至FPGA前端 4通道AD通过高带宽的FMC连接器 HPC 连接至FPGA从而大大降低了系统信号延迟 该板卡支持板上可编
  • Unity_Shader高级篇_16_Unity Shader入门精要_减少计算复杂度

    16 8 减少计算复杂度 16 8 1 Shader的LOD技术 和16 5 2提到的模型的LOD技术类似 Shader的LOD技术可以控制使用的Shader等级 它的原理是 只有Shader的LOD值小于某个设定的值 这个Shader才会
  • vue rsa对密码加密(jsencrypt)

    首先用npm命令下载jsencrypt npm install jsencrypt dep 在vue文件中引入jsencrypt import JSEncrypt from jsencrypt 对password加密 this encryp
  • vcglib 说明(转载)

    先来看看 VCGlib 能做什么 最基本的 它提供 Mesh triangular mesh tetrahedralmesh 三角网格或四面体网格 数据结构的定义 该数据结构支持对 Mesh数据的快速访问 拓扑信息 空间查询等 以及高效执行
  • Linux编译器-gcc 的使用以及 make/Makefile的用法

    文章目录 一 gcc 编译器 1 gcc 命令格式 gcc选项 2 完成过程 2 1预处理 2 2 编译 生成汇编 2 3 汇编 生成机器可识别代码 2 4 链接 生成可执行文件 二 make Makefile 1 简单介绍 2 示例代码
  • Scala高阶函数

    匿名函数 而在大量的spark中大都用的是匿名函数 不为函数命名 然后将其复制个一个变量 如 匿名函数格式 Val 变量名 参数 类型 gt 函数体 高阶函数 函数参数 1 将函数做参数传给另一个函数 如 首先我们定义了一个函数BigDat
  • 学习记录——matlab批量读取与存储

    要求文件名按照一定规律排列 如 代码 clc close all clear 设置目标文件夹的路径 folder C Users 26748 Desktop two saveFolder C Users 26748 Desktop two0
  • 手撕机器学习算法--一步步推导-------NFL(没有免费午餐定理)

    文章目录 前言 一 NFL是什么 二 表现形式 三 介绍 四 手动推导 前言 其实机器学习也好 深度学习也罢 在我看来 代码编程终究是不重要的 因为现成的库 其数学原理 其公式推导才是我们需要理解的地方 一 NFL是什么 没有免费的午餐定理
  • BLAS+BLACS+LAPACK+SCALAPACK安装

    最快的安装是用下面的scalapack installer 它将自动联网安装SCALAPACK以及所需要的BLAS BLACS LAPACK 下面是简短说明 INTRODUCTION The ScaLAPACK installer is a
  • 人脸识别打卡项目(4)

    目录 服务器打卡函数实现 签到验证检测 百度人脸识别复用 总结 服务器打卡函数实现 打卡函数的主要工作流程如图所示 当启动开始签到后 调用打卡签到响应函数 启动人脸采集设 备 然后与百度人脸库注册的人脸进行对比 如果用户存在 返回用户姓名