下载
中文
注册

色域转换

功能介绍

对输入的图像进行色域转换操作,输出到Tensor对象中。

接口调用流程

使用色域转换接口前,用户需准备好被转换的图片对象,并转换到Tensor对象中

图1 张量方法(色域转换)接口调用流程

关键步骤说明如下:

  1. 调用MxInit()接口进行全局初始化。
  2. 构造输出Tensor对象。

    根据业务要求,选择对应格式“CvtColorMode”,构造对应的输出Tensor。

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

示例代码

//初始化
MxBase::MxInit();
{
    // 读取图片
    std::string imgPath = "./test.jpg";
    cv::Mat imgData = cv::imread(imgPath);
    size_t originalWidth = image.cols;
    size_t originalHeight = image.rows;

    // 构造输入Tensor
    const std::vector<uint32_t> shape = {originalHeight, originalWidth, 3};
    MxBase::Tensor inputTensor((void*)imgData.data, shape, TensorDType::UINT8, -1);
    inputTensor.ToDevice(0);

    // 定义转换模式
    auto mode = MxBase::CvtColorMode::COLOR_BGR2RGB;

    // 定义输出Tensor
    MxBase::Tensor outputTensor;

    // 执行色域转换
    APP_ERROR ret = MxBase::CvtColor(inputTensor, outputTensor, mode, true);
    if (ret != APP_ERR_OK) {
        std::cout << "CvtColor failed." << std::endl;
    }
}
//去初始化
MxBase::MxDeInit();