CvtColor

函数功能

将Tensor的图像色域类型转换为指定的色域类型,支持以下类型间的转换。

GRAY转RGB和RGBA转mRGBA场景可通过预加载Split和Merge提高接口执行效率。该场景接口执行时,会在接口执行目录生成记录融合规则的“fusion_result.json”文件,该文件字段详细说明及融合规则开关配置可参考CANN ATC工具使用指南参数说明 > 高级功能参数 > 模型调优选项 > - > -fusion_switch_file章节。

“outputTensor”若设置“keepMargin”“true”,输出宽自动与16对齐。默认值为“false”,不保留Tensor中无效的边界区域。

当前Atlas 200I/500 A2 推理产品支持YUVSP420(nv12)YUV400(GRAY)

Atlas 推理系列产品支持:

函数原型

APP_ERROR CvtColor(const Tensor &inputTensor, Tensor &outputTensor, const CvtColorMode &mode, bool keepMargin = false, AscendStream &stream = AscendStream::DefaultStream());

参数说明

参数名

输入/输出

说明

inputTensor

输入

Tensor类,输入张量,不可为空,需在Device/DVPP侧分配内存,数据类型为UINT8。

  • 形状为 {通道数} 的张量,通道数需要与输入格式一致。RGBA转mRGBA时只支持通道数为“4”
    说明:

    “inputTensor”色域类型为YUVSP420或YVUSP420,设置输入张量形状时,高为图片显示高度的1.5倍。张量的高需要为3的倍数,宽为16的倍数,通道为1。

    “inputTensor”使用SetValidRoi接口设置有效区域时,其y1(对应张量的有效高度)需要为3的倍数,对应实际图片的有效高度为y1/3 * 2。

  • 输入张量宽度范围为[10, 4096],高度范围为[6, 4096],若输入或输出张量格式包含YUV400、YUVSP420、YVUSP420、GRAY时,宽度范围为[18, 4096]。
  • 如果是灰度图,支持形状为{高*宽}的张量。

outputTensor

输出

Tensor类,输出张量。

若不为空,需在Device/DVPP侧分配内存且数据类型为UINT8。RGBA转mRGBA或GRAY转RGB时张量类型和输入Tensor一致。

mode

输入

枚举类值,对应色域转换的原始类型和目标类型。

enum class CvtColorMode {
    COLOR_YUVSP4202GRAY = 0,
    COLOR_YVUSP4202GRAY = 1,
    COLOR_YUVSP4202RGB = 2,
    COLOR_YVUSP4202RGB = 3,
    COLOR_YUVSP4202BGR = 4,
    COLOR_YVUSP4202BGR = 5,
    COLOR_RGB2GRAY = 6,
    COLOR_BGR2GRAY = 7,
    COLOR_BGR2RGB = 8,
    COLOR_RGB2BGR = 9,
    COLOR_RGB2RGBA = 10,
    COLOR_RGBA2GRAY = 11,
    COLOR_RGBA2RGB = 12,
    COLOR_GRAY2RGB = 13,
    COLOR_RGBA2mRGBA = 14,
    COLOR_BGR2YUVSP420 = 15,
    COLOR_RGB2YUVSP420 = 16,
    COLOR_RGB2YVUSP420 = 17,
    COLOR_BGR2YVUSP420 = 18
};

“mode”色域类型为“COLOR_BGR2YUVSP420”“COLOR_RGB2YUVSP420”“COLOR_RGB2YVUSP420”或COLOR_BGR2YVUSP420:

  • 建议输入的RGBTensor宽高为偶数,否则输出图片的边缘可能存在异常数据。
  • 输出张量的高为输入张量高的1.5倍,例如,输入高为4096,输出的高则为6144,超过部分DVPP接口的限制,使用时需要注意是否满足后续业务需求。

keepMargin

输入

输出的outputTensor中是否保留Tensor中无效的边界区域。

当mode=COLOR_GRAY2RGB或mode=COLOR_RGBA2mRGBA时,该参数无效。

stream

输入

AscendStream类型,默认值为“AscendStream::DefaultStream()”。当参数值为默认值时,接口为同步操作,其他情况下,接口为异步操作。

返回参数说明

数据结构

说明

APP_ERROR

程序执行返回的错误码,请参考APP_ERROR说明