本文主要是介绍基于 树莓派&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++开发考勤机(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!