基于 树莓派&opencvface++开发考勤机(一)

2023-11-05 01:32

本文主要是介绍基于 树莓派&opencvface++开发考勤机(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

##基于 树莓派&opencv&face++开发考勤机(一)
简述:这是我大创内容的一部分。年前用opencv+qt实现了一个人脸识别的考勤机,但效果不理想,不
说你也明白为什么。于是开始尝试利用face++的服务来实现人脸的检测与识别,树莓派仅作为一个图像
采集端与简易控制端。在一台pc上进行识别数据的管理。
本文主要简述FACE++ API的使用,所有APIT_KEY等都已修改

  • 使用设备

    1.树莓派
    2.face++(测试应用才能免费使用API)
    3.opencv
    4.curl(以前做监控报警信息上传时,就用的curl,当时没系统学习html,对于上传图片时的,curl用的
    表单,不甚理解,费了很大的劲,才上传成功)
    5.rapidjson(腾讯开源的js解析器,秩序使用头文件即可)

  • face++

    • API文档:Face++人工只能开放平台(新版)
    • API介绍
    最开始看API很简单,但是看了半天没找到我要用的API,我就纳闷了!后来学习发现,确实这几个API就能满足需求。**有个概念要明确,FaceSet人脸集,我们可以认为是人脸组可以制定一个人,亦可以一定一堆人。不管是组的人脸集还是一个人的人脸集,face_token都是唯一,只要拿到识别率高的face_token,就可以和本地数据库比较确定这个人。**
    • 人脸识别:

      • Detect API:调用者提供图片文件或者图片URL,进行人脸检测和人脸分析。识别出的人脸会给出face_token,用于后续的人脸比对等操作。 利用Detect API实现人脸库。在我们设备注册人脸时,可以利用API返回的唯一字符串标识一个人,记录在我们本地的数据库中。待后续人脸识使用。
      • Search API:在Faceset中找出与目标人脸最相似的一张或多张人脸。支持传入face_token或者直接传入图片进行人脸搜索。使用图片进行比对时会选取图片中检测到人脸尺寸最大的一个人脸。人脸注册后,我们就利用这个API来进行人脸识别,达到确认这个人是谁的目的。
      • FaceSet API:这是一个API组,包含人脸创建,添加等信息。利用该API创建人脸组。
      • Face API:这也是一个API组,可以分析人脸,获取详细信息。
    • 图片识别&证件识别:在这个项目中没有使用。

    • API使用简要说明:API测试文件
      1.detect:上传一个图片,检测人脸并返回一个唯一face_token(要记录下来)

      API_KEY=bu7xZSoAVDAnT6dW
      API_PASSWD=VWGf4qc8jFyLq
      curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/detect" \-F "api_key=$API_KEY" \-F "api_secret=$API_PASSWD" \-F "image_file=@2.jpg" \   #说明如果上传图片数据要加 @-F "return_landmark=1" \-F "return_attributes=gender,age" 
      #会返回上传图片的face_token,记录下来。
      
        #curl 参数 -F, --form CONTENT  Specify HTTP multipart POST data (H)#detect api 参数image_file要求:一个图片,二进制文件,需要用post multipart/form-data的方式上传。
      

      2.create

      API_KEY=bu7xZSoAVDAnT6dW3tUW
      API_PASSWD=VWGf4qc8jFyLq_nzd
      curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/faceset/create" \-F "api_key=$API_KEY" \-F "api_secret=$API_PASSWD" \-F "outer_id=obama" \-F "tag=person,male" \-F "face_tokens=j2p6wwE1WDraMtnMgfMPLayp"

      3.verify

      API_KEY=bu7xZSoAVDAnT6dW3tUW
      API_PASSWD=VWGf4qc8jFyLq_nzd
      #注意是https:若使用http会访问不到服务器
      curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/search" \-F "api_key=$API_KEY" \-F "api_secret=$API_PASSWD" \-F "image_file=@ma/ma1.jpg" \-F "outer_id=obama"
      #返回的比对信息
      {"image_id": "SPzkP8wphY0ljOzW2F0y9w==", "faces": [{"face_rectangle": {"width": 159,"top":119, "left": 153, "height": 159},"face_token": "9b287bd71b547329f369d16"}], "time_used": 389, "thresholds": {"1e-3": 65.3, "1e-5": 76.5, "1e-4": 71.8}, "request_id": "1489305828,c193406c-25a-cf102173d6", "results": [{"confidence": 96.46,"user_id": "", "face_token": "993c7efe8d2f61673fc6ffa"}]
      

    }
    ```
    返回中confidence值比较高我们就是认为这是一个人,并利用返回的face_token在本地数据库中查找注册的人及face_token,然后对该数据处理。

  • 参考

    • url team人脸识别考勤机
    • 极客学院:codelast的树莓派课程(其中face++ v2接口已经失效,参考官方文档及上述代码修改即可)
    • codelast github主页
    • Face++ API

这篇关于基于 树莓派&opencvface++开发考勤机(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/346511

相关文章

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录