---
title: Image
description: "Image类的构造函数，可支持以下方式进行创建。若因内存不足，或无法识别芯片等构造失败的场景，则会抛出异常。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/msadg/mxvisionug_0708.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/msadg/mxvisionug_0708.html
indexId: f1644c69598dbdfb9ce8517acbabd536fd8dfdb0150098cad30c1f4e301da73c102
---
# Image

#### 函数功能

Image类的构造函数，可支持以下方式进行创建。若因内存不足，或无法识别芯片等构造失败的场景，则会抛出异常。

- 创建空Image对象。
- 创建自定义内存数据的图片，图片格式类型默认为ImageFormat::YUV_SP_420，设备ID默认为Host侧（deviceId = -1）。
- 创建带对齐高、宽和有效高、宽，自定义内存数据的图片，使用时需满足以下条件。

  - “deviceId”（设备ID）需为有效值，取值范围为[-1,    识别到的Device数
-1]，否则接口会调用失败。
  - “format”支持以下图片格式类型。

```
YUV_400 = 0,
RGB_888 = 12,
BGR_888 = 13,
ARGB_8888 = 14,
ABGR_8888 = 15,
RGBA_8888 = 16,
BGRA_8888 = 17,
```


  - “dataSize”需要与有效宽高或对齐后宽高一致，计算公式可参考：dataSize= 宽 * 高 * 通道数。

用户申请Host内存后，如需在Device侧构造Image对象，请参考如下操作进行。

1. 在Host侧构造Image对象，“deviceId”为“-1”（与“imageData”内存位置一致，设置为Host侧）。
2. 构造后的Image对象使用  ToDevice(deviceId)
方法，将内存迁移至Device侧。


#### 函数原型

```
Image();
```

```
Image(const std::shared_ptr<uint8_t> imageData, const uint32_t dataSize, const int32_t deviceId = -1, const Size imageSize = DEFAULT_IMAGE_SIZE, const ImageFormat format = ImageFormat::YUV_SP_420);
```

```
Image(const std::shared_ptr<uint8_t> imageData, const uint32_t dataSize, const int32_t deviceId, const std::pair<Size, Size> imageSizeInfo, const ImageFormat format);
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| imageData | 输入 | 用户构造的输入内存，该内存由用户管理申请和释放，不能为空指针（nullptr）。 |
| dataSize | 输入 | 用户输入内存的大小，需要与实际内存数据大小一致。 |
| imageSize | 输入 | 图像的宽高，默认为(0, 0)。 若用户自申请Device侧的内存，请设置实际内存数据对应的图像高宽数据。 |
| imageSizeInfo | 输入 | 图像有效宽高与对齐后宽高的组合，有效宽、高应不超过对齐后的宽、高，输入方式参见如下。 std::pair<Size, Size> imageSizeInfo(有效宽高，对齐后的宽高) 有效宽、高取值范围为[6, 8192]。 对齐后宽、高取值范围为[16, 8192]，其中宽为16的倍数、高为2的倍数。 |
| format | 输入 | 图片格式类型。 |
| deviceId | 输入 | 用户输入内存的设备ID。若用户自申请Device侧的内存，请输入对应的deviceId。 取值范围：[\-1, 识别到的Device数\-1]。 该值需要与“imageData”为同一侧内存（Host侧为“\-1”，Device侧为具体设备ID），否则后续业务存在风险和异常。 |
