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

    xiaoxiao2021-03-25  105

    ##基于 树莓派&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
    转载请注明原文地址: https://ju.6miu.com/read-34635.html

    最新回复(0)