跳到内容 跳到主导航 跳到页脚

视觉能力

简介

视觉能力目前主要指人员检测和识别两个模块,Api提供主要集中在PersonApi和RobotApi。

人员信息检测是本地能力,人站在机器人前方(排除光线较差的情况),机器人可以检测到前方人员,人站的较远时人脸和人体均可检测到,人站的比较近的时候只能检测到人脸信息。当人员id大于等于0时,代表着该人员的人脸信息完整,可以获取到该人人脸照片进行识别。

人员识别需要使用人脸照片进行识别,该能力需要使用网络,请注意获取人员照片时,保证人员符合采取照片条件。

注意:使用机器人视觉能力的时候,不可以同时使用机器人摄像头。这将会导致视觉能力报错失效

具体使用流程详见Demo,下面为API介绍:

Person主要信息

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:人员信息变化监听

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

获取全部人员信息

方法名称:getAllPersons

调用方式:

//获取机器人视野内全部人员信息
List<Person> personList = PersonApi.getInstance().getAllPersons();
//获取机器人视野内1m范围内所有的人员信息
List personList = PersonApi.getInstance().getAllPersons(1);

参数说明:

  • maxDistance:机器人多大视野范围内,单位为米,机器人能识别最准确的人员距离是1-3米。

返回:

  • personList:人员信息列表

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

获取检测到人体的人员列表

方法名称:getAllBodyList

调用方式:

//获取机器人视野内所有人体信息的人员列表
List<Person> personList = PersonApi.getInstance().getAllBodyList();
//获取机器人视野内1m范围内所有的人体信息的人员列表
List personList = PersonApi.getInstance().getAllBodyList(1);

参数说明:

  • maxDistance:机器人多大视野范围内,单位为米,机器人能识别最准确的人员距离是1-3米。

返回:

  • personList:人员信息列表

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

获取检测到人脸的人员列表

方法名称:getAllFaceList

调用方式:

//获取机器人视野内所有有人脸信息的人员列表
List<Person> personList = PersonApi.getInstance().getAllFaceList();
//获取机器人视野内1m范围内所有有人脸信息的人员列表
List personList = PersonApi.getInstance().getAllFaceList(1);

参数说明:

  • maxDistance:机器人多大视野范围内,单位为米,机器人能识别最准确的人员距离是1-3米。

返回:

  • personList:人员信息列表

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

获取检测到完整人脸的人员列表

方法名称:getCompleteFaceList

调用方式:

//获取机器人视野内所有有完整人脸信息的人员列表
List<Person> personList = PersonApi.getInstance().getCompleteFaceList();

返回:

  • personList:人员信息列表

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

获取正在焦点跟随的人员(此方法仅在焦点跟随进行中有效)

方法名称:getFocusPerson

调用方式:

Person person = PersonApi.getInstance().getFocusPerson();

返回:

  • person:人员信息

焦点跟随相关API,点击这里查看。

适用平台:

豹小秘豹小秘2mini招财豹招财豹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:需要获取的照片数量,此参数目前无效,默认只有一张

注意:该接口保存的图片在使用完后需要手动删除

适用平台:

豹小秘豹小秘2mini招财豹招财豹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:重试时间间隔

注意:不要重复注册同一个人脸

适用平台:

豹小秘豹小秘2mini招财豹招财豹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获取

注意:不要重复注册同一个人脸

豹小秘豹小秘2mini招财豹招财豹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接口获得

适用平台:

豹小秘豹小秘2mini招财豹招财豹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 后置摄像头

适用平台:

豹小秘豹小秘2mini招财豹招财豹Pro豹小秘DP

这篇文章是否有帮助?

0