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

来源:互联网 发布:如何成为一个美工 编辑:程序博客网 时间:2024/04/27 17:29

基于 树莓派&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=bu7xZSoAVDAnT6dWAPI_PASSWD=VWGf4qc8jFyLqcurl -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=bu7xZSoAVDAnT6dW3tUWAPI_PASSWD=VWGf4qc8jFyLq_nzdcurl -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=bu7xZSoAVDAnT6dW3tUWAPI_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
0 0
原创粉丝点击