色域转换
功能介绍
对输入的图像进行色域转换操作,输出到Tensor对象中。
接口调用流程
使用色域转换接口前,用户需准备好被转换的图片对象,并转换到Tensor对象中。
图1 张量方法(色域转换)接口调用流程

关键步骤说明如下:
- 调用MxInit()接口进行全局初始化。
- 构造输出Tensor对象。
- 选择执行方式进行色域转换,请根据实际业务选择同步方式或异步方式。
- 同步执行。
- 不创建Stream,将输入图片及其他参数传入CvtColor方法,获取色域转换结果。
- 异步执行。
- 创建Stream,具体请参见异步调用。
- 将输入图片、已创建的Stream及其他参数传入CvtColor方法,获取色域转换结果。
- 同步执行。
- 调用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();
父主题: 通过张量方法进行图像处理(Tensor)