编译及运行应用
编译及运行应用
单击resnet50_async_imagenet_classification获取样例,查看该样例下的README。
父主题: 基于Caffe ResNet-50网络实现图片分类(异步推理)
样例介绍
获取样例
单击batchcrop获取样例
功能描述
该样例从一张YUV420SP NV12格式的输入图片中按指定区域分别抠出八张224*224子图(YUV420SP NV12)。
原理介绍
在该样例中,涉及的关键功能点,如下表所示。
| 初始化 | - 调用aclInit接口初始化AscendCL配置。 - 调用aclFinalize接口实现AscendCL去初始化。 |
|---|---|
| Device管理 | - 调用aclrtSetDevice接口指定用于运算的Device。 - 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。 - 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。 |
| Context管理 | - 调用aclrtCreateContext接口创建Context。 - 调用aclrtDestroyContext接口销毁Context。 |
| Stream管理 | - 调用aclrtCreateStream接口创建Stream。 - 调用aclrtDestroyStream接口销毁Stream。 - 调用aclrtSynchronizeStream接口阻塞程序运行,直到指定Stream中的所有任务都完成。 |
| 内存管理 | - 调用aclrtMallocHost接口申请Host上内存。 - 调用aclrtFreeHost释放Host上的内存。 - 调用aclrtMalloc接口申请Device上的内存。 - 调用aclrtFree接口释放Device上的内存。 执行媒体数据处理时,若需要申请Device上的内存存放输入或输出数据,需调用acldvppMalloc申请内存、调用acldvppFree接口释放内存。 |
| 数据传输 | 如果在板端环境上运行应用,则无需进行数据传输。 |
| 媒体数据处理 | - 抠图 调用acldvppVpcBatchCropResizeAsync接口按指定区域从输入图片中抠图,再将抠的图片存放到输出内存中,作为输出图片。 |
目录结构
样例代码结构如下所示。
├── data
│ ├── dvpp_vpc_1920x1080_nv12.yuv //测试数据,需要按指导获取测试图片,放到data目录下
├── inc
│ ├── dvpp_process.h //声明媒体数据处理相关函数的头文件
│ ├── sample_process.h //声明模型处理相关函数的头文件
│ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件
├── src
│ ├── acl.json //系统初始化的配置文件
│ ├── CMakeLists.txt //编译脚本
│ ├── dvpp_process.cpp //媒体数据处理相关函数的实现文件
│ ├── main.cpp //主函数,一图多框抠图功能的实现文件
│ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件
│ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件
├── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件
父主题: 媒体数据处理V1(抠图,一图多框)
编译及运行应用
单击batchcrop获取样例,查看该样例下的README。
父主题: 媒体数据处理V1(抠图,一图多框)
样例介绍
获取样例
单击venc_image获取样例
功能描述
该样例将一张YUV420SP NV12格式的图片连续编码n次,生成一个H265格式的视频码流(n可配,通过运行应用时设置入参来配置,默认为16次)。
原理介绍
在该样例中,涉及的关键功能点,如下表所示。
| 初始化 | - 调用aclInit接口初始化AscendCL配置。 - 调用aclFinalize接口实现AscendCL去初始化。 |
|---|---|
| Device管理 | - 调用aclrtSetDevice接口指定用于运算的Device。 - 调用aclrtGetRunMode接口获取软件栈的运行模式,根据运行模式的不同,内部处理流程不同。 - 调用aclrtResetDevice接口复位当前运算的Device,回收Device上的资源。 |
| Context管理 | - 调用aclrtCreateContext接口创建Context。 - 调用aclrtDestroyContext接口销毁Context。 |
| 内存管理 | - 调用acldvppMalloc接口申请device上内存。 - 调用acldvppFree释放device上的内存。 |
| 数据传输 | 如果在板端环境上运行应用,则无需进行数据传输。 |
| 媒体数据处理 | 视频编码,调用aclvencSendFrame接口将将待编码的图片传到编码器进行编码。 |
目录结构
样例代码结构如下所示。
├── data
│ ├── dvpp_venc_128x128_nv12.yuv //测试数据,需要按指导获取测试图片,放到data目录下
├── inc
│ ├── venc_process.h //声明媒体数据处理相关函数的头文件
│ ├── sample_process.h //声明模型处理相关函数的头文件
│ ├── utils.h //声明公共函数(例如:文件读取函数)的头文件
├── src
│ ├── acl.json //系统初始化的配置文件
│ ├── CMakeLists.txt //编译脚本
│ ├── main.cpp //主函数,多图多框抠图功能的实现文件
│ ├── sample_process.cpp //资源初始化/销毁相关函数的实现文件
│ ├── utils.cpp //公共函数(例如:文件读取函数)的实现文件
│ ├── venc_process.cpp //媒体数据处理相关函数的实现文件
├── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件
父主题: 媒体数据处理V1(视频编码)
在线提单