首页 > 编程知识 正文

百度人脸api优惠(百度播放器SDK)

时间:2023-05-04 03:51:39 阅读:92016 作者:3776

上一节叙述了利用百度在线人脸接口和百度人脸识别离线SDK实现人脸识别的两种方式。

第一种方法是使用在线面部搜索api接口识别在线面部库中存储的面部照片。 但是,经过进一步调查,在线面部搜索界面需要使用面部照片。 照片为BASE64类型,传送到在线面部搜索api接口。 这样,当然可以在多个图像类型中捕获界面提示。 这里使用的是BASE64型。 其实我推荐使用base64型的图像。 因为这个接口还可以传输图像的face_token。 但是,如果用照相机实时获取图像,则无法获取face_token,所以只能将图像传输到在线面部搜索界面进行识别。

要去看代码:先准备3360百度的脸部识别离线SDK。 本例程序:

登录百度云账户:登录https://ai.Baidu.com/ai-doc/face/7k37c1twu

这个地方可以下载脸部识别安卓的SDK

点击进去,

然后点击:立即使用

点击此处下载SDK

然后,根据需要选择安卓程序:

然后开始施工后:

caption">

这个代码中可以看到上面有个,生活照检索:

可以看到,标注的地方,原来有注释掉的代码,上面是我新添加的代码,这里我在

//--->这里可以获取相机捕获的人脸图片 2021年10月19日15:12:54 Bitmap 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转换的接口在这里,这个不太好找:

截个图保存一下,他是在SDK文档中的.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。