昇腾社区首页
中文
注册

cvt_color

函数功能

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

若设置“keepMargin”为“true”,输出宽自动与16对齐。默认值为“false”,不保留Tensor中无效的边界区域。各产品支持的色域转换类型如表1 色域转换类型所示,标识的含义如下:

  • √:支持
  • x:不支持
    表1 色域转换类型

    色域转换类型

    Atlas 200I/500 A2 推理产品

    Atlas 推理系列产品

    Atlas 800I A2推理产品

    YUVSP420(nv12)YUV400(GRAY)

    YVUSP420(nv21)YUV400(GRAY)

    x

    YUVSP420(nv12)转RGB

    x

    YUVSP420(nv12)转BGR

    x

    YVUSP420(nv21)转RGB

    x

    YVUSP420(nv21)转BGR

    x

    RGB转YUVSP420(nv12)

    x

    RGB转YVUSP420(nv21)

    x

    BGR转YUVSP420(nv12)

    x

    BGR转YVUSP420(nv21)

    x

    RGB转YUV400(GRAY)

    x

    BGR转YUV400(GRAY)

    x

    BGR转RGB

    x

    RGB转BGR

    x

    RGB转RGBA

    x

    RGBA转YUV400(GRAY)

    x

    RGBA转RGB

    x

    GRAY转RGB

    x

    x

    RGB转mRGBA

    x

    x

    RGBA转mRGBA需要依赖CANN 8.0.RC1或CANN 8.0.RC1以后的版本。

函数原型

cvt_color(inputTensor: Tensor, cvtColorMode: cvt_color_mode, keepMargin = False)

参数说明

参数名

输入/输出

说明

inputTensor

输入

Tensor类,输入张量,不可为空,需在Device侧分配内存,数据类型为dtype.uint8。

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

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

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

cvtColorMode

输入

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

“cvtColorMode”色域类型为“base.color_bgr2yuvsp420”、“base.color_rgb2yuvsp420”、“base.color_rgb2yvusp420”或base.color_bgr2yvusp420:

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

keepMargin

输入

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

当cvtColorMode=base.color_gray2rgb或cvtColorMode=base.color_rgba2mrgba时,该参数无效。

返回参数说明

返回色域转换后的Tensor类数据。