利用百度云离线SDK&在线人脸库&人脸识别接口_实现在线人脸识别
日期:2023-02-27 19:44:06 / 人气:2977
上一节大体提到了,两种应用百度在线人脸接口以及百度人脸辨认离线SDK完成人脸辨认的两种方式.第一种方式,是用在线人脸搜索api接口,去辨认在线人脸库中存储的人脸照片,但是经过进一步伐 查,在线人脸搜索接口,需求运用人脸照片,照片是BASE64类型的,传输给在线人脸搜索api接口,这样才行,当然接口提示可以传入多种图片类型,这里我运用的是BASE64类型的,其实也是建议用base64类型的图片,由于这个接口还可以传输图片的face_token,但是,假如你经过摄像头去实时获取图片,的时分是获取不到face_token的,所以只能把图片传输给在线人脸搜索接口去辨认.去看一下代码:首先预备好:百度人脸辨认离线SDK,这个例子顺序:登录百度云账号:然后https://ai.baidu.com/ai-doc/FACE/7k37c1twu这个中央可以下载人脸辨认android的SDK找到点击出来,然后:然后点击立刻运用:然后这里点击下载SDK然后依据需求选择android顺序:然后翻开工程当前:这个代码中可以看到下面有个,生活照检索:可以看到,标注的中央,原来有正文掉的代码,下面是我新添加的代码,这里我在//--->这里可以获取相机捕捉的人脸图片 2021年10月19日15:12:54Bitmap bitmap= BitmapUtils.getInstaceBmp(rgbInstance.getImage());//--->依据faceToken 去搜索尝试featureSearchOnline(livenessModel,bitmap,feature);这里获取了,实时的摄像头照片当前,这里获取实时的摄像头照片是sdk本人带有的功用,然后拿到这个bitmap,然后把图片上传给featureSearchOnline 这个本人写的办法, //2021年10月20日15:22:51 // private void featureSearchOnline(LivenessModel livenessModel,Bitmap bitmap,byte[] feature) { long startFeature = System.currentTimeMillis(); String faceToekn = getFaceToken(feature); //1.获取百度云TOKEN String tokenStr = BaiDuAuthServiceUtils.getAuth(); String groupId ="XXXXX"; String base64Str = BitmapBaiDuUtils.bitmapToBase64(bitmap); //FACE_TOKEN String searlt = ""; searlt= BaiDuFaceSearchUtils.faceSearch(tokenStr,"BASE64",groupId,base64Str); System.out.println(searlt); Log.e("face_token--->0001",searlt); if(StringUtils.isNotBlank(searlt)){ JSONObject jsonObj= null; JSONArray respFaceArray= null; try { jsonObj = new JSONObject(searlt); if(jsonObj.getString("error_msg").equals("SUCCESS")){ respFaceArray=new JSONObject(jsonObj.getString("result")).getJSONArray("user_list"); if(respFaceArray!=null && respFaceArray.length()>0){ JSONObject userJsonObj = new JSONObject(respFaceArray.getString(0)); String groupIdStr = userJsonObj.getString("group_id"); String userIdStr =userJsonObj.getString("user_id"); String userInfoStr = userJsonObj.getString("user_info"); String userScore = userJsonObj.getString("score"); //1.辨认成功 构建User 前往 User user = new User(); user.setGroupId(groupIdStr); user.setUserId(userIdStr); user.setUserInfo(userInfoStr); user.setFeature(feature); user.setUserName("测试用户"); Float faceScore =0.0f; faceScore =Float.parseFloat(userScore); //人脸辨认 阈值设置爲 80 if(faceScore>=80){ livenessModel.setUser(user); livenessModel.setFeatureScore(Float.parseFloat(userScore)); } } } }catch (Exception e){ e.printStackTrace(); } livenessModel.setCheckDuration(System.currentTimeMillis() - startFeature); } }然后看看这个本人写的办法,可以看到这个办法,首先获取了这个图片的base64字符串,然后把这个字符串,传给了,BaiDuFaceSearchUtils.faceSearch这个百度人脸在线搜索的接口,停止人脸搜索.可以看到这里特别重要,每次搜索当前,前往的是个集合,普通是前往一个,当然假如,在人脸库中,一团体的user_id下,存了多团体脸,那麼会前往一个集合,那麼这里我获取的第一个就可以了.这里一定要留意,设置一个阈值,这里普通设置阈值是80就可以了.这里写好了当前,他辨认成功当前,会自动的回调,回调的时分就会走到:走到这里,这就相当于人脸登录成功了,然后就可以写本人的业务了.然后上一节说的,第二种方式,先把近程百度云人脸库的内容,同步到本机的平板上的话,那麼需求先运用,人脸特征值转换的一个在线api接口,把face_token,转换成人脸特征值,然后再存入,本地平板上,这样才干停止,人脸的离线辨认.由于在线辨认的时分,用的是face_token来标志人脸,离线辨认的时分,用的是人脸特征值,所以,这个时分,先把百度云在线人脸库中存的,人脸的face_token,转换成人脸特征值,再存入本地才干运用了.https://cloud.baidu.com/doc/FACE/s/Okg7edktq人脸特征值和face_token转换的接口在这里,这个不太好找:
作者:顺盈注册登录平台
新闻资讯 News
- 光伏制造要限产,这次的“自律”...12-16
- 信用卡大变局:“瘦身”与机制改...12-16
- 专访|《不讨好的勇气》导演董润...12-16
- 第三批发射成功,“千帆星座”在...12-16