下载
中文
注册

抠图

功能介绍

对输入的图像进行抠图操作,输出到Image对象中。

接口调用流程

使用抠图接口前,用户需准备好被抠图的图片对象。

图1 图像处理(抠图)接口调用流程

关键步骤说明如下:

  1. 调用MxInit()接口进行全局初始化。
  2. ImageProcessor初始化。

    用户构造ImageProcessor对象,之后可以调用InitVpcChannel()初始化通道,若不调用该接口,ImageProcessor会在执行抠图前自动进行通道初始化。

  3. 使用图片解码接口对输入图片进行解码。

    根据业务对图片进行解码,生成可抠图的Image对象。后续可以通过图像处理接口对图片进行处理,生成最终需要抠图的Image对象。

  4. 构造抠图Rect以及输出Image。

    根据业务要求,选择一对多、一对一或多对多的抠图方式,构造对应的输入和输出Rect和Image。

  5. 选择执行方式进行抠图,请根据实际业务选择同步抠图方式或异步抠图方式。
    1. 同步执行。
      1. 不创建Stream,将输入图片及其他参数传入Crop()接口,获取抠图结果。
    2. 异步执行。
      1. 创建Stream,具体请参见异步调用
      2. 将输入图片、已创建的Stream及其他参数传入Crop()接口,获取抠图结果。
  6. 调用MxDeInit()接口对初始化的全局资源进行去初始化。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝编译运行,仅供参考。

//初始化
MxInit();
{
    //构造图像处理类
    ImageProcessor imageProcessor(deviceId);

    //(可选)初始化图像处理通道
    imageProcessor.InitVpcChannel();

    //图像解码操作生成Image
    //解码后的图像类
    Image decodedImage;
    //根据图像路径进行解码
    APP_ERROR ret = imageProcessor.Decode(imagePath, decodedImage);
    if (ret != APP_ERR_OK) {
        return 0;
    }

    //执行Crop
    //抠图图像类
    Image cropImage;
    //抠图坐标信息
    Rect cropRect {0, 0, 640, 512};
    //抠图操作
    ret = imageProcessor.Crop(decodeImage, cropRect, cropImage);
    if (ret != APP_ERR_OK) {
        return 0;
    }
}
//去初始化
MxDeInit();