sdk-hwV1.3/external/eyesee-mpp/middleware/sun8iw21/media/LIBRARY/libADAS/include/Adas.h

248 lines
6.3 KiB
C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _ADAS_H_
#define _ADAS_H_
#define UNITEINTERFACE
typedef struct
{
union
{
int x;
int col;
};
union
{
int y;
int row;
};
}PointC;
typedef struct
{
union
{
int x;
int col;
};
union
{
int y;
int row;
};
union
{
int width;
int cols;
};
union
{
int height;
int rows;
};
}RectC;
typedef struct
{
union
{
int width;
int cols;
};
union
{
int height;
int rows;
};
}IMGSIZE;
typedef struct
{
unsigned char *ptr;
IMGSIZE imgSize;
}MtxUchar;
typedef struct
{
unsigned short *ptr;
IMGSIZE imgSize;
}MtxUshort;
/*******************************************/
//输入参数
/*******************************************/
typedef struct
{
#ifdef UNITEINTERFACE
int mode; //模式选择,mode ==1时暂停检测除v3之外的其他方案请置为 0
#endif
MtxUchar imgSmall; //子码流图 960*540
MtxUchar imgBig; //主码流图 1920*1080
struct
{
int enable;//有无GPS信号
float speed; //车速
}gps;
#ifdef UNITEINTERFACE
struct
{
unsigned char isStop; //本车是否停止
float a; //本车的加速度
float v; //本车的车速
}gsensor;//除v3之外的其他方案不必理会
struct
{
}obd;//OBD参数预留
#endif
struct
{
int fcwSensity;//前车防撞灵敏度012低 默认值为1
int ldwSensity;//车道偏离灵敏度012低 默认值为1
}sensity;
int LV; //光照强度
}FRAMEIN;
typedef struct
{
unsigned char angH; //镜头的水平视角
unsigned char angV; //镜头的垂直视角
unsigned short widthOri; //原始的图像宽度
unsigned short heightOri;//原始的图像高度
}ViewAng;
/*******************************************/
//输出参数
/*******************************************/
typedef struct
{
RectC idx; //该车牌在图像上的位置(左上角坐标和宽高)
}PLATE;
typedef struct
{
int Num; //有多少车牌
PLATE *plateP; //所有车牌的信息
struct
{
int refresh; //refresh为真时更新车牌副本
int isDisp; //isDisp 为真时,显示车牌副本
}watermark; //车牌水印
}PLATES;
typedef struct
{
unsigned char isWarn; //该车是否报警
unsigned char color; //该车需要涂上的颜色。0-不涂1-黄色2-红色
RectC idx; //该车在图像上的位置(左上角坐标和宽高)
float dist; //该车到本车的距离
float time; //与该车的碰撞时间
}CAR;
typedef struct
{
unsigned char isDisp; //是否显示车道线
unsigned char ltWarn; //左车道线报警标记 128压线(小声报警)。255压线超过灵敏度设定的时长(大声报警)
unsigned char rtWarn; //右车道线报警标记 128压线(小声报警)。255压线超过灵敏度设定的时长(大声报警)
PointC ltIdxs[2]; //左车道线在图像上的位置(由两个点确定)
PointC rtIdxs[2]; //右车道线在图像上的位置(由两个点确定)
int colorPointsNum; //车道线条状块分割点的个数
unsigned char dnColor; //下方一块的颜色。 1-蓝2-绿
unsigned short *rows; //车道线条状块分割点的行坐标
unsigned short *ltCols; //车道线条状块左边分割点的列坐标
unsigned short *mdCols; //车道线条状块中间分割点的列坐标
unsigned short *rtCols; //车道线条状块右边分割点的列坐标
}LANE;
typedef struct
{
int Num; //有多少辆车
CAR *carP; //所有车辆的信息
}CARS;
typedef struct
{
unsigned char isSave; //该标记位为真时 vanishLine和table保存到外设。
unsigned short vanishLine;
unsigned char vanishLineIsOk;
MtxUshort table;
}SAVEPARA;
typedef struct
{
LANE lane; //车道线信息
CARS cars; //车辆信息
PLATES plates; //车牌信息
SAVEPARA savePara;
int score; //驾驶习惯打分
#ifndef UNITEINTERFACE
char *version; //算法版本号
#endif
}ADASOUT;
/*******************************************/
//初始化输入参数
/*******************************************/
typedef struct
{
#ifdef UNITEINTERFACE
char *version; //算法版本号
struct
{
unsigned char isGps; //有无gps
unsigned char isGsensor; //有无Gsensor出v3之外其他方案请置为0
unsigned char isObd; //有无读取OBD
unsigned char isCalibrate; //是否进行安装标定
}config;
struct
{
}calibrate;//安装参数,预留
#endif
int fps; //帧率
IMGSIZE imgSizeSmall; //子码流图 960*540
IMGSIZE imgSizeBig; //主码流图 1920*1080
ViewAng viewAng; //初始化的时候读入
unsigned short vanishLine; //初始化的时候读入
unsigned char vanishLineIsOk;
MtxUshort table; //初始化的时候读入
void *setPara; //留个空指针是算法可能要外面设置一些参数,取决于路测的结果,暂时定义不了
#ifdef UNITEINTERFACE
struct
{
PointC ltLane[2]; //左边校准线的两个端点
PointC rtLane[2]; //右边校准线的两个端点
}adjustLane;//校准线,安装的时候,调整校准线和路上的车道线,使之尽量重合
#endif
}ADASIN;
/*******************************************/
typedef void (*AdasIn_v2)(FRAMEIN &frameIn,void *dv); //回调函数给adas输入参数
typedef void (*AdasOut_v2)(ADASOUT &adasOut,void *dv);//回调函数获取adas的计算结果
extern AdasIn_v2 callbackIn;
extern AdasOut_v2 callbackOut;
/*******************************************/
//接口函数
/*******************************************/
#ifdef UNITEINTERFACE
void InitialAdas(ADASIN &adasIn,void **dev);
#else
void InitialAdas(ADASIN adasIn,void **dev);
#endif
void ReleaseAdas();
#endif