图像识别API

Chinese, Simplified

1.      概述

 AmLink平台具有不错的图像处理能力,我们可以提供图像识别的API 接口以帮助客户实现相关需求,有兴趣的客户请更新最新固件,发邮件联系我们索取对应的库文件, 下面介绍一些主要API函数的调用方法。

2.       API说明

图像识别处理通过ImageAnalyze 类来完成,该类有主要如下public接口:

2.1   public int init(Handler handler,String outPath)

         该函数实现识别算法参数的初始化。主要参数:

         handler        Handler类型,用于图片识别处理后把识别结果发消息给调用者

         outPath      :    图片分析结果保持路径,如果是null,就是用默认路径(/sdcard/image_out)

2.2   public int addImage(String path)

         该函数增加图片到图片队列里等待分析,参数:

         path  : 原始图片文件的路径,如:/sdcard/image/test1.jpg

2.3   public int startAnalyze()

        该函数开始逐个分析图片队列里的图片,分析结果通过hanler发消息上报。消息带一个String类型的参数,msg.what=1,参数格式如下

       “srcPath;dstPath;target1,target2…”

       其中srcPath:原始图片路径全名,dstPath: 结果图片保存路径全名,

       target1,target2 表示识别结果,可以包含多个目标,以逗号隔开。

       对于每一个target,6个参数组成, 格式如下: name:credibility:xLT:yLT:xRB:yRB   name:识别目标名字,credibility:可信度,xLT:目标区域左上角坐标x, yLT:目标区域左上角坐标y, xRB:目标区域右下角坐标x, yRB:目标区域右下角坐标y.   坐标最大值取决于图片分辨率。

2.4   public void cleanQueue()

         清零图片队列。(并不删除原始图片)

2.5  public int stopAnalyze()

         停止图像分析需要注意的是分析算法有单独线程的,如果图片正在识别中,该函数不会马上生效。要等当前图片处理完才停止。

2.6  public int getStatus()

         返回当前状态,0: 表示未初始化,1: idle状态,初始化完成,2: 等待新图片加入。 3: 图片处理中,4:停止状态。负数表示错误异常.

2.7   public boolean setThr(int val)

置信度门限参数设置,范围0-100 值越大,识别结果的可信度越高,虚警的概率越小,值太高可能会识别失败。

2.8   public int getThr()

获取当前的置信度门限,范围0-100

2.9  public void updateCfgLib(Context context)

     更新训练配置参数,比较耗时。一般开机调用一次

  

3.      参考代码

import com.temolin.imageutility.ImageAnalyze;  //请导入aar

public class ImgTool  {
    ImageAnalyze mImageAnalyze;
    Handler mHander;
 
    public ImgTool(Handler handler){
        mImageAnalyze = ImageAnalyze.getInstance();
        mHander = handler;
        mImageAnalyze.init(mHander,"/sdcard/image_out");
    }
    
    public void upCfg(Context context){
        mImageAnalyze.updateCfgLib(context);
    }
 
    public void start(){
        mImageAnalyze.startAnalyze();
    }
 
    public void stop(){
        mImageAnalyze.cleanQuene();
        mImageAnalyze.stopAnalyze();
    }
 
    public void pause(){
        mImageAnalyze.stopAnalyze();
    }
 
    public void add(String path){
        mImageAnalyze.addImage(path);
    }
}

private void testImgTool(){
    Log.v(TAG,"testImgTool");
    imgTool = new ImgTool(mHandler);
    imgTool.upCfg(this);
    imgTool.add("/sdcard/test1.jpg");
    imgTool.add("/sdcard/test2.jpg");
    imgTool.start();
    Log.v(TAG,"testImgTool end");
}


文档中心

以上内容是否对您有帮助?