# 航拍拼接模块接口说明

本模块用于吊舱的扫描全景图拼接，包含前视和下视两个模式。前视与下视投影面和效果均不同。二者接口大部分相同。



## 前视接口

### 1.依赖
本模块依赖ceres优化库(包含gflag、glog)以及cuda支持，opencv 455支持。
除cuda库外，其余库均以vc14动态库文件形式提供。


### 2.接口

```C++
static API_FrontStitch* Create(std::string cachedir = "./cache");
```

模块创建接口，其中默认参数为使用cache路径，cache是用于拼接图优化的预留功能，当前版本暂未使用，可以不做设置

```C++
static void Destroy(API_FrontStitch* obj);
```
模块析构接口，使用完毕后释放内存。

```C++
virtual FPanInfo		Init(FrameInfo info, ScanRange stAzRange, ScanRange stPtRange) = 0;
```
初始化接口，请使用拼接时刻的内外参信息以及扫描区间进行初始化，其中方位扫描区间和俯仰扫描区域均为伺服坐标系。程序内部会转换为大地坐标进行初始化，并将拼接图中心置为扫描中心。

```C++
    virtual BYTE8       Run(GD_VIDEO_FRAME_S img, FrameInfo para) = 0;
```
运行拼接流程，在该过程中程序自动将当前图像重新投影到全景图上，可以通过访问全景图内存进行实时显示。


```C++
    virtual GD_VIDEO_FRAME_S ExportPanAddr() = 0;
```
获取全景图接口，其中GD_VIDEO_FRAME_S是高德研发中心通用帧接口，内部维护了图像类型和指针等信息。具体参见GD_VIDEO_FRAME_S接口说明


```C++
    virtual SINT32 OptAndOutCurrPan() = 0;
```
全景投影完毕后，可以调用该接口进行优化，主要是精细对齐帧以及拼接缝消除等，暂未实现。



## 下视接口
### 1.依赖
本模块依赖ceres优化库(包含gflag、glog)，opencv 455支持。

### 2.接口


```C++
static API_FrontStitch* Create(std::string cachedir = "./cache");
```

模块创建接口，其中默认参数为使用cache路径，cache是用于拼接图优化的预留功能，当前版本暂未使用，可以不做设置

```C++
static void Destroy(API_FrontStitch* obj);
```
模块析构接口，使用完毕后释放内存。

```C++
virtual FPanInfo		Init(FrameInfo info) = 0;
```
初始化接口，请使用拼接时刻的内外参信息进行初始化，并将拼接图中心置为扫描中心。


```C++
    virtual void SetOutput(std::string name, std::string outdir) = 0;
```
设置输出路径，下视模块按照通用谷歌瓦片生成标准256*256瓦片，提前设置好输出文件夹

```C++
    virtual void SetConfig(UPanConfig config) = 0;
```
设置运行参数。



```C++
    virtual BYTE8       Run(GD_VIDEO_FRAME_S img, FrameInfo para) = 0;
```
运行拼接流程，在该过程中程序自动将当前图像重新投影到全景图上，可以通过访问全景图内存进行实时显示。


```C++
    virtual GD_VIDEO_FRAME_S ExportPanAddr() = 0;
```
获取全景图接口，其中GD_VIDEO_FRAME_S是高德研发中心通用帧接口，内部维护了图像类型和指针等信息。具体参见GD_VIDEO_FRAME_S接口说明


```C++
    virtual SINT32 OptAndOutCurrPan() = 0;
```
全景投影完毕后，可以调用该接口进行优化，主要是精细对齐帧以及拼接缝消除等，暂未实现。