---
title: aclmdlSetAIPPByInputIndex
description: "动态AIPP场景下，根据指定的模型输入的输入index，设置模型推理时的AIPP参数值，同步接口。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgc/aclcppdevg_03_0142.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgc/aclcppdevg_03_0142.html
indexId: 21058af2beba287abc5289787497d58d1b275c1093d01c5676e8a2c22c10b9ed105
---
# aclmdlSetAIPPByInputIndex

#### 函数功能

动态AIPP场景下，根据指定的模型输入的输入index，设置模型推理时的AIPP参数值，同步接口。

动态AIPP支持的几种操作的计算方式及其计算顺序如下：抠图->色域转换->缩放（当前版本不支持缩放）->减均值/归一化->padding。


#### 约束说明

- 经过动态AIPP处理后的图像的宽、高必须与原始模型中输入Shape中的宽、高保持一致。
- 多Batch场景下，根据每个Batch的配置计算出动态AIPP后输出图片的宽、高，经过动态AIPP后每个Batch的输出图片宽、高必须是一致的。计算输出图片宽、高的计算公式如  表1
所示。
- 抠图或者缩放或者padding之后，对图片宽、高的校验规则如下，其中，aippOutputW、aippOutputH分别表示AIPP输出图片的宽、高，其它参数是  aclmdlSetAIPPSrcImageSize
、  aclmdlSetAIPPScfParams
、  aclmdlSetAIPPCropParams
、  aclmdlSetAIPPPaddingParams
接口的入参：
**表1 输出图片宽、高计算公式**

| 抠图 | 缩放 | 补边（padding） | 动态AIPP输出图片的宽、高 |
| --- | --- | --- | --- |
| 否 | 否 | 否 | aippOutputW=srcImageSizeW，aippOutputH=srcImageSizeH |
| 是 | 否 | 否 | aippOutputW=cropSizeW，aippOutputH=cropSizeH |
| 是 | 是 | 否 | aippOutputW=scfOutputSizeW，aippOutputH=scfOutputSizeH |
| 是 | 否 | 是 | aippOutputW=cropSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=cropSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 否 | 是 | aippOutputW=srcImageSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=srcImageSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 是 | 是 | aippOutputW=scfOutputSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=scfOutputSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 是 | 否 | aippOutputW=scfOutputSizeW，aippOutputH=scfOutputSizeH |
| 是 | 是 | 是 | aippOutputW=scfOutputSizeW + paddingSizeLeft + paddingSizeRight，aippOutputH=scfOutputSizeH + paddingSizeTop + paddingSizeBottom |


#### 函数原型

aclError aclmdlSetAIPPByInputIndex(uint32_t modelId, aclmdlDataset *dataset, size_t index, const aclmdlAIPP *aippParmsSet)


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| modelId | 输入 | 模型的ID。 调用aclmdlLoadFromFile接口/aclmdlLoadFromMem接口/aclmdlLoadFromFileWithMem接口/aclmdlLoadFromMemWithMem接口加载模型成功后，会返回模型ID。 |
| dataset | 输入 | 模型推理的输入数据的指针。 使用aclmdlDataset类型的数据描述模型推理时的输入数据，输入的内存地址、内存大小用aclDataBuffer类型的数据来描述。 |
| index | 输入 | 表示在第几个输入上设置动态AIPP参数。如果该输入没有关联动态AIPP输入，则返回报错。 可调用aclmdlGetAippType查询指定模型的指定输入是否有关联的动态AIPP输入，若有，则本接口的index参数值与aclmdlGetAippType接口的index参数值保持一致；若无，则无需设置动态AIPP参数。 |
| aippParmsSet | 输入 | 动态AIPP参数对象的指针。 提前调用aclmdlCreateAIPP接口创建aclmdlAIPP类型的数据。 |


#### 返回值说明

返回0表示成功，返回其它值表示失败。


#### 参考资源

接口调用示例，参见动态AIPP（多个动态AIPP输入）。
