Skip to content

如何使用dvpp接口开发OpenCV图像预处理算子 #15

@MengqingCao

Description

@MengqingCao

本文为对昇腾CANN官方文档中对媒体数据处理的整理和个人总结。

什么是DVPP

DVPP是昇腾芯片中的图像处理模块,向外部提供AscendCL接口,可实现快速的图像视频媒体数据的加速处理(包括视频和图像的编解码、图像预处理等)。其在芯片中的具体位置如下图:

image.png

DVPP应用开发流程

官网说明文档中给出了两个版本的媒体数据处理(V1和V2),其总体流程及实现功能一致,但接口形式不一致,下面以V2为例进行分析(官网宣布V1后续版本不再更新)。

概括来讲,使用DVPP接口可以概括为五步:

  • ACL初始化及运行管理资源申请
  • 媒体数据处理系统初始化和图像数据输入准备
  • 图像数据处理
  • 图像数据输出获取及媒体数据处理系统去初始化
  • 运行管理资源释放及ACL去初始化

如下图,其中每一步中可展开的步骤以黄色箭头引出。

image.png

具体调用的接口及示例代码见VPC图像处理典型功能

注意点

对于不同的昇腾型号,不同输入图像格式的宽高对齐方式也不同,内存大小计算方式也不同,详见约束说明 。因此要注意根据输入数据的类型或图像编码格式对内存分配和宽高对齐做出调整。

例如,OpenCV默认读取图像的格式为BGR,指定数据类型为CV_8U3C时,对应的dvpp的图像格式为HI_PIXEL_FORMAT_BGR_888,widthstride对应为图像的宽×3,内存大小为图像的宽×高×3.

日志查看

dvpp算子在遇到一些执行错误时并不会主动报错,需要接收并打印算子返回值来检验是否成功运行,根据错误码列表来对应查看。

此外,dvpp算子的日志文件位于~/ascend/log/debug/device-X路径内,可查看dvpp算子执行or报错信息。

Metadata

Metadata

Assignees

No one assigned

    Labels

    AscendSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions