视觉能力
视觉能力目前主要指人员检测和识别两个模块,Api提供主要集中在PersonApi和RobotApi。
人员信息检测是本地能力,人站在机器人前方(排除光线较差的情况),机器人可以检测到前方人员,人站的较远时人脸和人体均可检测到,人站的比较近的时候只能检测到人脸信息。当人员id大于等于0时,代表着该人员的人脸信息完整,可以获取到该人人脸照片进行识别。
人员识别需要使用人脸照片进行识别,该能力需要使用网络,请注意获取人员照片时,保证人员符合采取照片条件。
注意:使用机器人视觉能力的时候,不可以同时使用机器人摄像头。这将会导致视觉能力报错失效
具体使用流程详见Demo,下面为API介绍:
private int id; //人脸本地识别id,此id可用于焦点跟随等。 private double distance; //距离 private double faceAngleX; //人脸x轴角度 private double faceAngleY; //人脸y轴角度 private int headSpeed; //当前机器人头部转动速度 private long latency; //数据延迟 private int facewidth; //人脸宽度 private int faceheight; //人脸高度 private int faceX; //人脸x坐标 private int faceY; //人脸y坐标 private int bodyX; //身体x坐标 private int bodyY; //身体y坐标 private int bodywidth; //身体宽度 private int bodyheight; //身体高度 private double angleInView; //人相对于机器人头部的角度 private String quality; //检查质量参数 private int age; //年龄(云端注册后会返回估算值) private String gender; //性别(按照国家规定,此项必须授权注册后才会返回结果) private int glasses; //是否戴眼睛 private String remoteFaceId; //如果已注册,注册的人脸远端id private String faceRegisterTime; //注册时间 //更多Person信息,可参见SDK中com.ainirobot.coreservice.client.listener.Person类定义
方法名称:registerPersonListener / unregisterPersonListener
stopGetAllPersonInfo
调用方式:
PersonListener listener = new PersonListener() { @Override public void personChanged() { super.personChanged(); //人员变化时,可以调用获取当前人员列表接口获取机器人视野内所有人员 } }; //注册人员监听 PersonApi.getInstance().registerPersonListener(listener); //取消注册人员监听 PersonApi.getInstance().unregisterPersonListener(listener);
参数说明:
- listener:人员信息变化监听
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:getAllPersons
调用方式:
//获取机器人视野内全部人员信息 List<Person> personList = PersonApi.getInstance().getAllPersons(); //获取机器人视野内1m范围内所有的人员信息 List personList = PersonApi.getInstance().getAllPersons(1);
参数说明:
- maxDistance:机器人多大视野范围内,单位为米,机器人能识别最准确的人员距离是1-3米。
返回:
- personList:人员信息列表
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:getAllBodyList
调用方式:
//获取机器人视野内所有人体信息的人员列表 List<Person> personList = PersonApi.getInstance().getAllBodyList(); //获取机器人视野内1m范围内所有的人体信息的人员列表 List personList = PersonApi.getInstance().getAllBodyList(1);
参数说明:
- maxDistance:机器人多大视野范围内,单位为米,机器人能识别最准确的人员距离是1-3米。
返回:
- personList:人员信息列表
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:getAllFaceList
调用方式:
//获取机器人视野内所有有人脸信息的人员列表 List<Person> personList = PersonApi.getInstance().getAllFaceList(); //获取机器人视野内1m范围内所有有人脸信息的人员列表 List personList = PersonApi.getInstance().getAllFaceList(1);
参数说明:
- maxDistance:机器人多大视野范围内,单位为米,机器人能识别最准确的人员距离是1-3米。
返回:
- personList:人员信息列表
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:getCompleteFaceList
调用方式:
//获取机器人视野内所有有完整人脸信息的人员列表 List<Person> personList = PersonApi.getInstance().getCompleteFaceList();
返回:
- personList:人员信息列表
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
获取正在焦点跟随的人员(此方法仅在焦点跟随进行中有效)
方法名称:getFocusPerson
调用方式:
Person person = PersonApi.getInstance().getFocusPerson();
返回:
- person:人员信息
焦点跟随相关API,点击这里查看。
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 否 | 否 | 是 |
方法名称:getPictureById
调用方式:
RobotApi.getInstance().getPictureById(reqId, faceId, count, new CommandListener() { @Override public void onResult(int result, String message) { try { JSONObject json = new JSONObject(message); String status = json.optString("status"); //获取照片成功 if (Definition.RESPONSE_OK.equals(status)) { JSONArray pictures = json.optJSONArray("pictures"); if (!TextUtils.isEmpty(pictures.optString(0))) { //照片本地存储全路径 String picturePath = pictures.optString(0); } } } catch (JSONException | NullPointerException e) { e.printStackTrace(); } } });
参数说明:
- faceID:人脸id,可通过本地人脸识别获得(Person的id)
- count:需要获取的照片数量,此参数目前无效,默认只有一张
注意:该接口保存的图片在使用完后需要手动删除
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:startRegister,传入姓名,该方法会实时从摄像头中获取人脸,将该人脸注册为该姓名。日常使用该方式注册人脸
调用方式:
RobotApi.getInstance().startRegister(reqId, personName, timeout, tryCount, secondDelay, new ActionListener() { @Override public void onResult(int status, String response) throws RemoteException { if (Definition.RESULT_OK != status) { //注册失败 return; } try { JSONObject json = new JSONObject(response); String remoteType = json.optString(Definition.REGISTER_REMOTE_TYPE); String remoteName = json.optString(Definition.REGISTER_REMOTE_NAME); if (Definition.REGISTER_REMOTE_SERVER_EXIST.equals(remoteType)) { //当前用户已存在 } else if (Definition.REGISTER_REMOTE_SERVER_NEW.equals(remoteType)) { //新注册用户成功 } } catch (JSONException e) { e.printStackTrace(); } }});
参数说明:
- personName:注册名称
- timeout:注册超时时间,注册失败时会尝试重新注册,直到超时
- tryCount:失败重试次数,重试的时间大于timeout后,会放弃重试
- secondDelay:重试时间间隔
注意:不要重复注册同一个人脸
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:remoteRegister
调用方式:
RobotApi.getInstance().remoteRegister(reqId, name, path, new CommandListener() { @Override public void onResult(int result, String message) { try { JSONObject jsonObject = new JSONObject(message); int code = jsonObject.optInt("code", -1); switch (code) { case 0://成功 break; case Definition.REMOTE_CODE_FACE_INVALID://图片无效 break; default://其他 break; } } catch (JSONException e) { e.printStackTrace(); } } });
参数说明:
- name:注册名称
- path:图片路径,可以通过getPictureById获取
注意:不要重复注册同一个人脸
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:getPersonInfoFromNet
调用方式:
RobotApi.getInstance().getPersonInfoFromNet(reqId, faceId, pictures, new CommandListener() { @Override public void onResult(int result, String message) { try { JSONObject json = new JSONObject(message); JSONObject info = json.getJSONObject("people"); info.getString("name"); //名称 info.getString("gender"); //性别 info.getString("age"); //年龄 } catch (JSONException | NullPointerException e) { e.printStackTrace(); } } });
参数说明:
- faceID:人脸id,可通过本地人脸识别获得(Person的id)
- pictures:人脸照片,可通过getPictureById接口获得
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 是 | 是 | 是 | 是 |
方法名称:switchCamera 调用方式:
RobotApi.getInstance().switchCamera(reqId, camera, new CommandListener() { @Override public void onResult(int result, String message) { try { JSONObject json = new JSONObject(message); if (Definition.RESPONSE_OK.equals(json.getString("status"))) { //切换成功 } } catch (JSONException | NullPointerException e) { e.printStackTrace(); } } });
参数
- camera:摄像头,String 类型 Definition.JSON_HEAD_FORWARD 前置摄像头 Definition.JSON_HEAD_BACKWARD 后置摄像头
适用平台:
豹小秘 | 豹小秘2 | mini | 招财豹 | 招财豹Pro | 豹小秘DP |
是 | 是 | 否 | 否 | 否 | 否 |