【2023 · CANN训练营第一季】应用开发深入讲解——第四章 DVPP初级

news2024/10/7 18:27:14

学习资源

1.JPEG图片解码
文档
2.图片缩放
文档

媒体数据处理

数据预处理的典型使用场景

在这里插入图片描述

数据预处理的多种方式

分为两种,AIPP和DVPP
在这里插入图片描述

DVPP数据预处理功能

在这里插入图片描述
了解两个重要概念

宽stride 和 高stride

理解:这里假设一张图片的宽为500,高为300,由于JPEG对输出图片的要求为: 宽stride:64对齐 高stride:16对齐 当500/64=7.8125 不是整数,要向上取整,所以使用8*64=512 ,得出了宽stride,高stride也是类似。

在这里插入图片描述

内存申请与释放

在这里插入图片描述

JPEG图片解码

第1单元 使用约束

图片分辨率约束
在这里插入图片描述
图片格式、宽高对齐、内存约束表格

在这里插入图片描述

第2单元 媒体数据处理V1版本

流程:

JPEG图片解码流程

JPEG图片解码——内存申请与释放

·acldvppMalloc
·函数功能:

该接口主要用于分配内存给Device侧媒体数据处理时使用,申请的大页内存满足数据处理的要求(例如,内存首地址128对齐),同步接口。
调用acldvppMalloc接口申请内存时,会对用户输入的size按向上对齐成32整数倍后,再多加32字节申请。
若用户使用acldvppMalloc接口申请大块内存并自行划分、管理内存时,用户在管理内存时,需按每张图片的实际数
据大小向上对齐成32整数倍+32字节(ALIGN UPIlenl+32字节)来管理内存。
例如,用户已使用acldvppMalloc接口申请大块内存并自行管理内存,用户需管理n张图片的内存,每张图片大小为 len字节,实际应按照n*(ALIGNUP[len]+32字节)的大小管理内存,每张图片的内存地址按(ALIGN UP[len]+32字节)为单位偏移。
ALIGN UP表示向上按32字节对齐:((len-1)/32+1)*32。
调用该接口申请大页内存失败,仅表示系统内的大页内存不够>调用该接口申请内存后,必须使用acldvppFree接口释放内存。

内存申请与释放

通道创建与销毁

·acldvppCreateChannelDesc
·函数功能:

创建acldvppChannelDesc类型的数据,表示创建图片数据处理通道时的通道描述信息。该接口为同步接口。
·函数原型:
acldvppChannelDescacldvppCreateChannelDesc)·返回值说明:
返回acldvppChannelDesc类型,表示成功。>返回null,表示失败。
· = = = = = = = = = = = = ========== = = = = = = = = = = = = = = = = = = = = = = =
·acldvppDestroyChannelDesc
·函数功能:
销毁acldvppChannelDesc类型的数据,只能销毁通过acldvppCreateChannelDesc接口创建的 acldvppChannelDesc类型。该接口为同步接口。
必须在调用acldvppDestroyChanne接口销毁channel通道之后再调用acldvppDestroyChannelDesc接口释放 acldvppChannelDesc类型的数据,否则报错。
·函数原型:
·aclError acldvppDestroyChannelDesc(acldvppChannelDesc
channelDesc)

在这里插入图片描述

描述图片

·acldvppCreatePicDesc·函数功能:

创建图片描述信息。同步接口。·函数原型:
acldvppPicDesc*acldvppCreatePicDesc()·返回值说明:
返回acldvppPicDesc类型,表示成功。>返回null,表示失败。
= = = = = = = = = = = = = = = ====================================

·acldvppDestroyPicDesc·函数功能:

销毁图片描述信息,只能销毁通过acldvppCreatePicDesc接口创建的图片描述信息。·函数原型:
aclErroracldvppDestroyPicDesc(acldvppPicDesc*picDesc)

在这里插入图片描述

整体调用顺序

JPEG图片解码–整体调用顺序·整体调用顺序:

创建通道描述对象:调用acldvppCreateChannelDesc
创建acldvppChannelDesc对象
创建通道:调用acldvppCreateChannel(acldvppChannelDesc)创建通道
创建图片描述:调用acldvppCreatePicDesc创建acldvppPicDesc对象
执行操作.……
销毁图片描述:调用acldvppDestroyPicDesc(acldvppPicDesc)销毁图片描述
创建图片描述:调用acldvppCreatePicDesc创建acldvppPicDesc对象
执行操作…
销毁图片描述:调用acldvppDestroyPicDesc(acldvppPicDesc)销毁图片描述
销毁通道:调用acldvppDestroyChannel(acldvppChannelDesc)销毁通道
销毁通道描述对象:调用acldvppDestroyChannelDesc(acldvppChannelDesc)销毁通道描述对象

解码主接口

在这里插入图片描述

读取图片宽高

在这里插入图片描述

预测输出内存

在这里插入图片描述

VPC图片约束

图片分辨率约束
在这里插入图片描述
图片格式、宽高对齐、内存约束
在这里插入图片描述
在这里插入图片描述

VPC图片缩放

VPC
·功能:

抠图,从输入图片中抠出需要用的图片区域。
缩放-针对不同分辨率的图像,当前支持非8K缩放。
(非8K缩放,用于处理输入图片分辨率在326~40964096范围内的图片。)
-从是否抠多张图的维度,可分为单图裁剪缩放(支持非压缩格式) 一图多框裁剪缩放(支持非压缩格式)。
-其它缩放方式,如:原图缩放、等比例缩放。
善加,从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有冬片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
拼接,从输入图片中报多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。

8K缩放现在也支持了,用于处理宽或高在4096~8192范围内的输入图片,实际开发时请参见对应版本的文档,了解8K缩放时支持的图片格式。

抠图+缩放+叠加
在这里插入图片描述
在这里插入图片描述
调用流程
在这里插入图片描述

VPC–典型流程
·调用acldvppCreateChannel接口创建图片数据处理的通道。创建图片数据处理的通道前,需先调用acldvppCreateChannelDesc接口创建通道描述信息。
·调用acldvppCreateRoiConfig接口、acldvppCreateResizeConfig接口分别创建抠图区域位置的配置、缩放配置。
实现抠图、缩放功能前,若需要申请Device上的内存存放输入或输出数据,需调用acldvppMalloc申请内存、调用acldvppFree接口释放内存。
·执行抠图、缩放。

关于抠图:
调用acldvppVpcCropAsync异步接口,按指定区域从输入图片中抠图,再将抠的图片存放到输出内存中,作为输出图片。输出图片区域与抠图区域 cropArea不一致时会对图片再做一次缩放操作。
-当前系统还提供了acldvppVpcCropAndPasteAsync异步接口,支持按指定区域从输入图片中抠图,再将抠的图片贴到目标图片的指定位置,作为输出图片。
·抠图区域cropArea的宽高与贴图区域pasteArea宽高不一致时会对图片再做一次缩放操作。
·如果用户需要将目标图片读入内存用于存放输出图片,将贴图区域叠加在目标图片上,则需要编写代码逻辑:在申请输出内存后,将目标图片读入输出内存。
关于缩放
-调用acldvppVpcResizeAsync异步接口,将输入图片缩放到输出图片大小
调用acldvppCreateResizeConfiq接口创建图片缩放配置数据,不支持指定缩放算法,默认缩放算法为“最近邻插值”。
-缩放后输出图片内存根据YUV420SP格式计算,计算公式:对齐后的宽对齐后的高3/2
对于异步接口,还需调用aclrtSynchronizeStream接口阻塞Host运行,直到指定Stream中的所有任务都完成,
·调用acldvppDestroyRoiConfig接口、acldvppDestroyResizeConfig接口分别销毁抠图区域位置的配置、缩放配置。
·调用acldvppDestroyChannel接口销毁图片数据处理的通道。销毁图片数据处理的通道后,再调用acdvppDestroyChannelDesc接销毁通道描述信息。

缩放接口
在这里插入图片描述
裁剪接口
在这里插入图片描述
剪切粘贴

在这里插入图片描述

V2版本
接口调用流程
在这里插入图片描述

应用开发初级章节小测

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot Properties YML文件的优先级

SpringBoot启动文件的优先顺序测试 运行时指定加载文件时,最高Java jar spring.config.location优先于spring.profiles.activeJava -jar 三种语法 运行时不指定加载文件时,其次1.项目路径下的config目录优先级最高---12.项目路径的优先级其次---23.Eclip…

linux:查找相关命令find与grep

find 语法 在指定目录下查找文件和目录。 find [path] [expression]path:是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 exp…

Kotlin高级协程

Kotlin高级协程 一.前言二.先从线程说起三.协程的设计思想四.协程特点:优雅的实现移步任务五.协程基本使用六.协程和线程相比有什么特点,如何优雅的实现异步任务 一.前言 在文章正式上干货之前,先说一点背景吧;我是 Kotlin 协程官…

C语言初阶之扫雷代码详解(含递归展开)

扫雷代码详解 扫雷代码思路头文件解析主函数解析函数文件解析①初始化函数(InitBoard)②打印函数③难易选项函数(Select)④布雷(SetMine)⑤获取周边雷数(GetMine)⑥展开函数&#xf…

从零开始,轻松打造Web自动化测试框架:Python+Selenium实战指南

在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的…

广州虚拟动力亮相2023世界元宇宙生态博览会,邀您解锁元宇宙商机

2023年5月10-12日 2023第2届世界元宇宙生态博览会 在广州广交会展馆正式举办! 广州虚拟动力携虚拟数字人全栈式解决方案参展 诚邀您莅临3.2馆A109-A110展位参观交流 2022年全国多个地方出台元宇宙政策文件,各地方政府的元宇宙产业扶持政策也在逐渐细…

webshell及工具

目录 一,Webshell的概念 二,eval函数的定义和用法 三,连接工具菜刀 3.1文件管理 3.2 虚拟终端 3.3 菜刀与burpsuite联动 四,哥斯拉的使用 五,冰蝎 六,webshell分类 七,webshell如何连接 …

哪个牌子的电视盒子好用?罗鹏数码盘点2023电视盒子排名

电视机资源少、卡顿,配置不足的时候只需要安装一台电视盒子就可以解决这些问题,不需要花费大价钱更换电视机。那么,你知道哪个牌子的电视盒子好用吗?今天罗鹏就来详细聊聊这个话题,分享2023最新电视盒子排名。 一&…

在家经济性雾视训练

如何使用睛延宝进行雾视训练,才能缩轴控度? 雾视的相关概念 首先大家要知道什么是雾视? 顾名思义,雾视就是眼睛看目标物时有点模糊,好像有层雾。 雾视的效果:放松睫状肌,拉薄晶状体,增厚脉络膜。 原理就…

如何与劳氏 Lowe‘s 建立EDI连接?

劳氏Lowes(以下简称:Lowes)是专门从事家庭装修的美国零售公司,而 EDI 则是电子数据交换的缩写,是指通过计算机网络进行企业间电子数据交换的一种标准化方式。 通过 EDI,企业与Lowes之间可以直接交换各种商…

【Java笔试强训 35】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥年会抽奖…

六、FM1288调试方案-调试过程及细节

本篇文章,主要讲述实际调试操作:具体到需要调节哪些寄存器,调节完后,会有什么样的变化。但是整体效果不能达到我们期望的绝对感觉,所以我先把我们调试的结果放在前面,如果觉得不理想,也可以不看后面的内容了。 文章目录 1. 调试准备1.1 建立与FM1288芯片通信1.2 Uart结…

IPv6有哪些优势?

现有的互联网是在IPv4协议的基础上运行的。IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,而地址空间的不足必将妨碍互联网的进一步发展。 为…

1.100ASK-V853-PRO编译烧写

100ASK_V853-PRO 环境配置及编译烧写 0.前言 本章主要介绍关于100ASK_V853-PRO开发板的Tina SDK包的下载和编译打包生成镜像,并将镜像烧录到100ASK_V853-PRO开发板上。在进行100ASK_V853-PRO开发板的环境配置前需要获取配置虚拟机系统,可以参考&#x…

【HA】HomeAssistant 添加 小米温湿度计2代

本方法只是被动的获取小米温湿度计广播出的温度和湿度数据,并没有其他更多功能。 0. 本人配置 树莓派3B Debian 11 (Bullseye) 64 位 Supervisor 2023.05.dev0901 HomeAssistant 已安装 HACS 1. 安装 打开侧边栏中的HACS,点击“集成” 右下角找到“…

ACM - DP - 提高2 (状态机 + 状态压缩 + 区间 + 树形 + 数位 + 单调队列优化 + 斜率优化)

DP 类型题二 【跳转DP 类型题一 (模型:数字三角形最长上升子序列背包】一、状态机模型1、AcWing 1057. 股票买卖 IV :两个状态转换2、AcWing 1058. 股票买卖 V :三个状态转换3、AcWing 1052. 设计密码 :T 维状态转换 …

IDEA创建接口类和接口实现类

IDEA创建接口类和接口实现类 IDEA创建接口类IDEA创建接口实现类 以创建Dao包下的代码为例。 IDEA创建接口类 选中要创建接口类的package,右键菜单依次选择New——Java Class。 在弹出的界面中,将创建的对象类型由Class改为Interface,如下图…

Jmeter接口测试流程详解

1、jmeter简介 Jmeter是由Apache公司开发的java开源项目,所以想要使用它必须基于java环境才可以; Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。 2、jmeter安装 首先需要安装jdk(最好是最…

“锻造”微生物组以帮助我们长寿和繁荣

谷禾健康 衰老通常伴随着心血管、神经和免疫系统等一系列疾病的风险增加。 虽然在理解微生物组导致与衰老相关的个别疾病的细胞和分子机制方面取得了显著进展,我们在之前的文章也有这方面的阐述: 肠道微生物群与健康长寿 肠道微生物群的老化及其对宿主免…

二、Linux入门| shell运行原理及Linux权限的理解

一、Linux 软件包管理器 - yum centos7的安装方式 1、源码安装(较复杂) 2、rpm包安装(较复杂,未解决依赖关系) 3、yum安装(不用编译源码,不用解决软件的依赖关系,门槛较低&#xff…