
# 模型推理
将数据输入模型进行推理，推理结束后将推理结果返回。
#### 接口调用
virtual HiLensEC hilens::Model::Infer(const InferDataVec \& inputs, InferDataVec \& outputs)
#### 参数说明
表1参数说明 
| 参数名     | 参数类型                                                                 | 说明      |
|:---|:---|:---|
| inputs  | InferDataVector，请参见[参数类型说明]。 | 推理输入数据。 |
| outputs | InferDataVector，请参见[参数类型说明]。 | 推理输出。   |
   
 #### 参数类型说明
- InferDataVec
  模型推理输入输出。
  ```
  typedef std::vector<InferData> hilens::InferDataVec
  ```
  
- InferData
  ```
  struct InferData
  {
      unsigned int size;                   // 输出大小
      std::shared_ptr<unsigned char> data; // 数据指针
      /**
       * @brief 构造一个空的模型推理数据
       */
      InferData() : size(0), data(nullptr) {}
      /**
       * @brief 从一个cv::Mat构造一个InferData
       * @param img 输入图片
       */
      InferData(const cv::Mat &img);
      /**
       * @brief 从一组指针数据构造一个InferData
       * @param data 数据指针，此构造函数会拷贝这部分数据
       * @param size 数据大小（字节）
       */
      InferData(const unsigned char *data, unsigned int size);
  };
  ```
  
 
#### 返回值
返回值为0即成功，其他即失败，失败响应参数如[错误码](https://support.huaweicloud.com/sdkreference-hilens/hilens_03_0048.html)所示。
如果推理的实际输入与模型输入大小不一致，推理将会失败。此时infer的返回值将是一个int的错误码，日志会报出错误信息，开发者可以通过错误信息来定位错误。
