创建应用

创建Android物体识别应用

1. 登录 习悦开发者平台,进入 控制台 页面,点击“创建应用”按钮,如图:

2. 填写应用相关信息,勾选Android应用平台,提交应用,如图:

3. 在我的应用模块可以查看已创建的应用及应用信息,如图:

Android 开发

示例Demo

开始开发

1. 下载 物体识别Android SDK
2. 在我的应用模块,获取应用的API Key 与 API Secret;

3. 把API Key与API Secret在AndroidManifest.xml配置文件中进行文件配置并设置授权服务启动,并配置授权服务。

<service android:name="cn.thinkjoy.sdk.b.b"/>
<meta-data android:name="THINK_JOY_KEY" android:value="您的API KEY"/>
<meta-data android:name="THINK_JOY_SECRET" android:value="您的API SECRET"/>

4. 同时您需要在AndroidManifest.xml文件中添加如下权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5. 创建自定义Application并使应用继承此类,在onCreat中进行SDK初始化服务;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SDKInitializer.init(this);
        SDKInitializer.setRunStatus(this,0);   //设置开发状态,0为正式版  1为测试版,不设置默认为正式版
    }
}

6. 在应用的MainActivity中的onResume与onDestroy分别调用sdk的对应周期,控件后台服务定时授权的销毁与重新绑定授权。

@Override
protected void onResume() {
    super.onResume();
    SDKInitializer.onResume(getApplicationContext());
}

@Override
protected void onDestroy() {
    super.onDestroy();
    SDKInitializer.onDestroy(getApplicationContext());
}

7. 配置好以上环境即可进行更多操作,以下是物体区域检测示例代码:

ObjectManage.newInstance(this).getObjectRegion(bitmap, new ObjectCheckListener() {
    @Override
    public void onObjectCheck(List<ObjectInfo> objectInfos, ErrorMsg error) {
        if (error.getCode() == 200) {
            myBitmap = bitmap.copy(Bitmap.Config.RGB_565, true);
            Canvas canvas = new Canvas(myBitmap);
            for (ObjectInfo objectInfo : objectInfos) {
                //根据中心点的x,y,宽和高得出物体的左上右上四个坐标
                float left = (float) (objectInfo.getX() - objectInfo.getWidth() / 2) * bitmap.getWidth();
                float right = (float) (objectInfo.getX() + objectInfo.getWidth() / 2) * bitmap.getWidth();
                float top = (float) (objectInfo.getY() - objectInfo.getHeight() / 2) * bitmap.getHeight();
                float bottom = (float) (objectInfo.getY() + objectInfo.getHeight() / 2) * bitmap.getHeight();
  ...
}});

8. 物体检测成功得到List<ObjectInfo>数据模型数组,详解请看物体识别Android Demo,根据返回结果绘制物体框如下图:

物体识别

接口名称

/ObjectManage/getObjectRegion

描述

传入图片检测图片中的物体,并返回相关种类信息;该服务可设置返回数量、返回数据置信度以及待检测的物体种类。

参数

参数名 类型 名称 描述
必须 bitmap Bitmap 图片位图 待检测的图片
可选 top_num int 返回数量 返回信息最大数量,必须为大于0的整数,-1代表不设置。
classes List<String> 检测种类 设置需要检测的种类类别,null代表不设置。
类型参考
threshold float 置信度 返回数据置信度阈值,区间为[0.0,1.0],-1代表不设置。

返回值说明

检测后服务将返回物体信息对象数组,数据结构如下:

字段 类型 说明
objectInfos List<ObjectInfo> 物体信息数组
width double 图片宽度
height double 图片高度
X double 图片中心x坐标
Y double 图片中心y坐标
alias String 物体种类中文描述
cate String 物体种类英文描述
Pro double 物体置信度
error ErrorMsg 错误信息实体,code为0代表成功

调用示例

ObjectManage.newInstance(this).getObjectRegion(bitmap, new ObjectCheckListener() {
    @Override
    public void onObjectCheck(List<ObjectInfo> objectInfos, ErrorMsg error) {
        ...
}});

返回状态码

状态码 描述
0 SUCCESS 成功
1201 MISSING_ARGUMENTS 缺少参数
1800 HTTP_ERROR HTTP访问错误
1900 ERROR 服务器错误
1904 NO_CONTENT 未检测到内容
1954 NOT_AUTH 未授权
1955 NOT_UNPACK 图片无法解压

classes参数

参数名 说明
person 人类
bicycle 自行车
car 轿车
motorcycle 摩托车
airplane 飞机
bus 巴士
train 火车
truck 卡车
boat
traffic light 红绿灯
fire hydrant 消防栓
stop sign 停车标志
parking meter 停车计时器
bench 长凳
bird
cat
dog
horse
sheep
cow 奶牛
elephant 大象
bear
zebra 斑马
giraffe 长颈鹿
backpack 背包
umbrella 雨伞
handbag 手提包
tie 领带
suitcase 手提箱
frisbee 飞盘
skis 雪橇
snowboard 滑雪板
sports ball 运动球
kite 风筝
baseball bat 棒球棒
baseball glove 棒球手套
skateboard 滑板
surfboard 冲浪板
tennis racketv 网球拍
bottle 瓶子
wine glass 酒杯
cup 杯子
fork 餐叉
knife 餐刀
spoon 汤匙
bowl
banana 香蕉
apple 苹果
sandwich 三文治
orange 橙子
broccoli 花椰菜
carrot 胡萝卜
hot dog 热狗
pizza 披萨
donut 甜甜圈
cake 蛋糕
chair 椅子
couch 沙发
potted plant 盆栽
bed
dining table 餐桌
toilet 马桶
display 显示器
laptop 笔记本电脑
mouse 鼠标
remote 遥控器
keyboard 键盘
cell phone 手机
microwave 微波炉
oven 烤箱
toaster 烤面包机
sink 水槽
refrigerator 冰箱
book 书籍
clock 时钟
vase 花瓶
scissors 剪刀
teddy bear 泰迪熊
hair drier 电吹风
toothbrush 牙刷
Q群
咨询