/* * 版权所有 2015 魔视智能科技(上海)有限公司 * Copyright (c) 2015,Motovis Intelligent Technologies (Shanghai) Co.,Ltd * 魔视智能智能公司秘密 * Motovis Intelligent Confidential Proprietary * 文件名称:MvObjectEventDetect.h * 摘要:封装事件检测算法 * 版本:v1.0.0.0 * 作者: * 完成日期:2019年12月3日 */ #ifndef _OBJECT_EVENT_DETECT_H_ #define _OBJECT_EVENT_DETECT_H_ #ifdef __cplusplus extern "C" { #endif #include #include #include #define EVENT_WARN_NUM 26 //报警类型种类 #define EVENT_ADAS_WARN_NUM 7 //adas报警类型种类 #define EVENT_DSM_WARN_NUM 15 //dsm报警类型种类 //数据通道类型 typedef enum _DETECT_CHANNEL_TYPE_ { ADAS_DETECT_CHANNEL = 1, //adas数据通道 RIGHT_BSD_FRONT_DETECT_CHANNEL = 2, //右侧bsd(非鱼眼)--右前 从前往后 DMS_DETECT_CHANNEL = 4, //dms数据通道 RIGHT_BSD_REAR_DETECT_CHANNEL = 8, //右侧bsd(非鱼眼)--右后 从后往前 LEFT_BSD_FRONT_DETECT_CHANNEL = 0x10, //左侧bsd(非鱼眼)--左前 LEFT_BSD_REAR_DETECT_CHANNEL = 0x20, //左侧bsd(非鱼眼)--左后 FRONT_BSD_DETECT_CHANNEL = 0x40, //前侧bsd(非鱼眼) REAR_BSD_DETECT_CHANNEL = 0x80 //后侧bsd(非鱼眼) }DetectChannelType; //数据功能类型 typedef enum _DETECT_FUNCTION_TYPE_ { ADAS_FUNCTION_TYPE = 1, //adas类型 BSD_FUNCTION_TYPE = 2, //bsd功能类型 DSM_FUNCTION_TYPE = 4, //dsm功能类型 SECOND_BSD_FUNCTION_TYPE = 8, //第2bsd功能类型(bsd2) BELT_FUNCTION_TYPE = 0x10, //安全带功能类型(dsm2) OVERBOARD_FUNCTION_TYPE = 0x20, //超员功能类型 IMAGEFUSION_FUNCTION_TYPE = 0x40, //360图像融合功能类型 CARGO_FUNCTION_TYPE = 0x80, //货箱功能类型 ALIVE_FUNCTION_TYPE = 0x100, //活体功能类型 FACE_COUNT_FUNCTION_TYPE = 0x200, //人头计数功能类型 THIRD_BSD_FUNCTION_TYPE = 0x400, //第3bsd功能类型(bsd3) FOURTH_BSD_FUNCTION_TYPE = 0x800 //第4bsd功能类型(bsd4) }DetectFunctionType; //bsd安装类型 typedef enum _BSD_INSTALL_TYPE_ { BSD_RIGHT = 0, //右 BSD_FRONT = 1, //前 BSD_LEFT = 2, //左 BSD_BACK = 3 //后 }BsdInstallType; //bsd车身位置 typedef enum _BSD_CARPOS_TYPE_ { BSD_CARPOS_LEFT = 0, //左 BSD_CARPOS_RIGHT = 1, //右 BSD_CARPOS_UP = 2, //上 BSD_CARPOS_DOWN = 3 //下 }BsdCarPosType; //bsd相机类型 typedef enum _BSD_CAMERA_TYPE_ { BSD_CAMERA_NOFISHEYE = 0, //非鱼眼 BSD_CAMERA_FISHEYE = 1 //鱼眼 }BsdCameraType; //视频图像帧信息 typedef struct _VideoFrameDataInfo { int nFrameId; //帧号 int u32Width; //视频图像宽 int u32Height; //视频图像高 long long u64PTS; //时间戳(毫秒) unsigned char* pu8VirAddr; //视频图像帧数据虚拟地址 }VideoFrameDataInfo; //标定点坐标 typedef struct _CalibrationPoint { int x; //X坐标 int y; //Y坐标 }CalibrationPoint; //标定点坐标 typedef struct _CalibrationFloatPoint { float x; //X坐标 float y; //Y坐标 }CalibrationFloatPoint; //自标定矩形区域 typedef struct _CalibrationRectRegion { int x; //X坐标 int y; //Y坐标 int nWidth; //宽 int nHeight; //高 }CalibrationRectRegion; //360标定错误返回信息 typedef struct _CalibrationErrorInfo { float fDeviation[4]; //每路相机的标定误差,顺序分别是0-前, 1-右, 2-后, 3-左 int nRet[4][2]; //每路相机每块标定布自标定返回值 }CalibrationErrorInfo; //虚拟线坐标点 typedef struct _VirtualLinePoint { CalibrationPoint ptBegin; //起点坐标 CalibrationPoint ptEnd; //终点坐标 }VirtualLinePoint; //目标类型 typedef enum _ObjectDetectType { NONE_TYPE = 0, //未知类型 PEDESTRIAN_TYPE = 1, //行人 CAR_TYPE = 2, //小型汽车 BUS_TYPE = 3, //大巴 TRUCK_TYPE = 4, //卡车 MIDBUS_TYPE = 5, //中巴 MOTO_TYPE = 6, //机动车 NOMOTO_TYPE = 7 //非机动车 }ObjectDetectType; //报警事件类型 typedef enum _ObjectEventType { EVENT_NONE = 0, //无报警 EVENT_LDW_LEFT = 1, //向左车道偏离报警 EVENT_LDW_RIGHT = 2, //向右车道偏离报警 EVENT_FCW = 4, //前车碰撞报警 EVENT_PCW = 8, //行人碰撞报警 EVENT_HMW = 0x10, //车距监测报警 EVENT_CROSS_WALK = 0x20, //人行横道检测报警 EVENT_BLIND = 0x40, //右侧盲区报警 EVENT_SMOKE = 0x80, //抽烟 EVENT_CALL = 0x100, //打电话 EVENT_YAWN = 0x200, //打哈欠 EVENT_NO_ALIGNMENT = 0x400, //未对准(偏离座位) EVENT_CAMERA_SHIELD = 0x800, //摄像头遮挡 EVENT_ABNORMAL_IDENTITY = 0x1000, //身份异常(不是原来的驾驶员) EVENT_ABSENT_DRIVER = 0x2000, //异常驾驶(检测不到脸) EVENT_EYES_MASKED = 0x4000, //阻断型墨镜 EVENT_MOUTH_MASKED = 0x8000, //嘴部遮挡 EVENT_EYE_CLOSING = 0x10000, //闭眼 EVENT_SWINGING_LEFT = 0x20000, //分神驾驶(东张) EVENT_SWINGING_RIGHT = 0x40000, //分神驾驶(西望) EVENT_HEAD_UP = 0x80000, //分神驾驶(仰望) EVENT_HEAD_DOWN = 0x100000, //分神驾驶(低头) EVENT_NORMAL_IDENTITY = 0x200000, //身份正常 EVENT_ABNORMAL_BELT = 0x400000, //未系安全带 EVENT_ABNORMAL_HAND = 0x800000, //手脱离方向盘 EVENT_ABNORMAL_PHONE = 0x1000000, //玩手机 EVENT_ABNORMAL_OVERBOARD = 0x2000000 //超员 }ObjectEventType; //车道线类型 typedef enum _LaneType { OTHER_LINE = 0, //其他车道线类型 WHITE_SOLID_LINE = 1, //白实线 YELLOW_SOLID_LINE = 2, //黄实线 DOUBLE_YELLOW_LINE = 3, //双黄线 DOUBLE_WHITE_LINE = 4 //双白线 }LaneType; //目标信息 typedef struct _ObjectPara { int nObjectId; //目标编号 ObjectDetectType nDetectType; //目标类型 int nLeft; //目标位置左 int nTop; //目标位置上 int nRight; //目标位置右 int nBottom; //目标位置下 float fDist; //每个目标的距离(单位m,最大值250,最小值0) float fVelo; //相对运动目标的相对速度(单位m/s) float fTTC; //ttc时间(单位s) int nTargetPosX; //落脚点横坐标(bsd用) int nTargetPosY; //落脚点纵坐标(bsd用) }ObjectPara; //目标跟踪报警结果 typedef struct _ObjectTrackEventResult { int nFrameId; //图像帧号 long long lTimeStamp; //时间戳(毫秒) int nObjectNumber; //目标数目 ObjectPara objInfo[255]; //目标信息 ObjectEventType nEventType; //报警事件类型 int nMainObjectId; //主目标编号 int nWarnFrameId[10]; //报警图像帧号 int nWarnFrameIdCount; //实际报警图像帧号数目 int nDangerLevel; //报警等级,1表示最高危险报警,2表示次高危险报警,3表示第三高危险报警 CalibrationPoint tFirstAlarmPoint[4]; //一级告警区域(bsd用) CalibrationPoint tSecondAlarmPoint[4]; //二级预警区域(bsd用) CalibrationPoint tThirdAlarmPoint[4]; //三级预警区域(bsd用) int nFaceLandMarksNum; //人脸关键点 CalibrationPoint tFaceLandMarks[68]; //人脸关键点 LaneType nLeftLineType; //左车道线类型 LaneType nRightLineType; //右车道线类型 }ObjectTrackEventResult; //车身信息 typedef struct _CarInfoInput { float fVelocity; //车速,单位: km/h float fAcceleration; //车辆加速度 >0表示加速度,单位:m/s2 float fDeceleration; //车辆减速度 0表示速度为0或正在加速度 其他值表示减速度值,单位:m/s2 int nBrake; //刹车,1,刹车 0,未刹车 int nLLight; //左转向灯,1、点亮 0、不亮 int nRLight; //右转向灯,1、点亮 0、不亮 float fAlpha; //转向角,单位:度 float fSteeingWheelAngle; //方向盘转角,单位:度 }CarInfoInput; //事件检测配置信息 typedef struct _ObjectEventDetectConfig { char szAdasDetectConfigPathName[256]; //adas检测配置 char szAdasTrackConfigPathName[256]; //adas跟踪配置 char szBsdDetectConfigPathName[256]; //右视非鱼眼bsd检测配置(从后往前) char szRightBsdFrontDetectConfigPathName[256]; //右视非鱼眼bsd检测配置(从前往后) char szFrontBsdDetectConfigPathName[256]; //前视bsd检测配置 char szRearBsdDetectConfigPathName[256]; //后视bsd检测配置 char szRightFisheyeBsdDetectConfigPathName[256]; //右视鱼眼bsd检测配置 char szBeltDetectConfigPathName[256]; //安全带检测配置 char szOverBoardDetectConfigPathName[256]; //超员检测配置 char szDsmFaceDetectConfigPathName[256]; //dsm人脸检测配置 char szDsmFaceLandMarksDetectConfigPathName[256]; //dsm人脸特征点检测配置 char szDsmFaceVerificationDetectConfigPathName[256]; //dsm人脸认证检测配置 char szDsmFaceFeaturePathName[256]; //dsm人脸特征存储路径配置 char szDsmHeadPoseConfPathName[256]; //dsm头部位姿配置 char szDsmEyeLandMarksDetectConfigPathName[256]; //dsm人眼特征点检测配置 char szDsmMaskDetectConfigPathName[256]; //口罩墨镜检测配置 char szDsmSmokeConfPathName[256]; //抽烟检测配置 char szDsmCallConfPathName[256]; //电话检测配置 char szDsmAliveDetectConfigPathName[256]; //活体检测配置 char szTsrDetectConfigPathName[256]; //tsr检测配置 char szLutTablePathName[256]; //360图像融合标定配置 char szCarPathName[256]; //车辆图像配置 char szCameraIntrinsicPathName[256]; //360相机内参配置 }ObjectEventDetectConfig; //相机内外参 typedef struct _CameraCalibration { int fCarLen; //车长,单位mm int fCarWidth; //车宽(两个轮胎外侧之间的距离),单位mm int fRefCenter; //相机与车辆中心之间的距离(从驾驶室往外看,左正右负),单位mm int fRefTop; //相机到前保险杠距离,单位mm int fDisLen2Tyre; //镜头和前轮胎之间的距离,单位mm,镜头前方为正向 int fCameraHeight; //相机距离地面高度,单位mm float fCameraFocus; //相机焦距,单位mm float fCameraDx; //sensor尺寸(像平面离散化系数,CMOS unit cell size, 单位mm) float fPitch; //俯仰角,默认为0 float fYaw; //偏航角,默认为0 }CameraCalibration; //bsd报警区域 typedef struct _BsdWarnRegion { CalibrationPoint tFirstRegionPoint[4]; //一级报警区域(4个点组成的任意四边形) CalibrationPoint tSecondRegionPoint[4]; //二级报警区域(4个点组成的任意四边形) CalibrationPoint tThirdRegionPoint[4]; //三级报警区域(4个点组成的任意四边形) }BsdWarnRegion; //bsd报警距离 typedef struct _BsdWarnDistance { float fFirstWarnDistance; //一级报警距离(单位:mm) float fSecondWarnDistance; //二级报警距离(单位:mm) float fThirdWarnDistance; //三级报警距离(单位:mm) float fFrontWarnDistance; //前方报警距离(单位:mm) float fLeftWarnDistance; //左报警距离(单位:mm) float fRightWarnDistance; //右报警距离(单位:mm) }BsdWarnDistance; //事件报警参数配置 typedef struct _EventWarnParamConfig { bool bStartEventWarnKind[EVENT_WARN_NUM]; //是否启动此类报警,一共21种报警类型,0表示EVENT_LDW_LEFT,20表示EVENT_HEAD_DOWN,顺序与ObjectEventType宏定义一致 int nAbnormalWarnFrameCount[EVENT_WARN_NUM]; //累积多长时间开始报警,用帧数来表示(主要针对dsm) int nNormalFrameCount[EVENT_WARN_NUM]; //累积多长时间恢复正常,用帧数来表示(主要针对dsm) int nAbnormalWarnIntervalFrameCount[EVENT_WARN_NUM]; //间隔多长时间进行下一次报警,用帧数来表示(主要针对dsm) float fAbnormalWarnScoreThreshold[EVENT_WARN_NUM]; //每种异常报警阈值,0-1之间,0表示更容易触发报警,1表示更难触发报警(主要针对dsm) float fNormalWarnScoreThreshold[EVENT_WARN_NUM]; //每种报警恢复正常阈值,0-1之间,0表示更容易恢复正常,1表示更难恢复正常(主要针对dsm) int nHmwTime; //HMW开启阈值,单位ms int nPcwTime; //PCW开启阈值,单位ms int nFcwTime; //FCW报警开启阈值,单位ms float fHmwVel; //HMW报警车速阈值,单位km/h float fFcwVel; //FCW报警车速阈值,单位km/h float fLdwVel; //LDW报警车速阈值,单位km/h float fPcwVel; //PCW报警车速阈值,单位km/h float fBsdFirstVel; //BSD一级报警车速阈值,单位km/h float fBsdSecondVel; //BSD二级报警车速阈值,单位km/h float fBsdThirdVel; //BSD三级报警车速阈值,单位km/h int nLdwDistance; //左右车道线距离报警阈值,单位cm(范围:-20cm~20cm,越过车道线为负) float fDsmVel; //DSM报警车速阈值,单位km/h }EventWarnParamConfig; //车道线的点阵列(最多四条车道线) typedef struct _DARW_POINT_INFO { unsigned int pSrcPointX[4][600]; //每条车道线的点x坐标 unsigned int pSrcPointY[4][600]; //每条车道线的点y坐标 unsigned int nPointCounters[4]; //每条车道线的点数 int nLaneID[4]; //车道线编号(-1表示不存在此车道线,0,1,2,3表示从左往右的四条车道线) }DrawPointInfo; //人脸特征信息 typedef struct _FACE_FEATURE_INFO { float fFaceFeature[512]; //人脸特征 int nFaceNum; //人脸数目 int nLeft; //人脸位置左 int nTop; //人脸位置上 int nRight; //人脸位置右 int nBottom; //人脸位置下 int nErrorCode; //错误类型,0-成功,1-提取特征失败,2-无人脸,3-人脸太偏 }FaceFeatureInfo; //bsd路沿点阵列 typedef struct _CURB_POINT_INFO { unsigned int pSrcPointX[600]; unsigned int pSrcPointY[600]; unsigned int nPointCounters; }CurbPointInfo; //360相机外参 typedef struct _FisheyeCameraCalibration { ///////////////////////////以下是相机外参,棋盘格必须保证相对车辆左右对称,上下平齐 float fCarLen; //车长,单位mm float fCarWidth; //车宽(两个轮胎外侧之间的距离),单位mm float fFrontDistance; //车头到棋盘格的纵向距离,单位mm, 默认1000mm float fRearDistance; //车尾到棋盘格的纵向距离,单位mm, 默认1000mm float fLeftDistance; //车左侧到棋盘格的横向距离,单位mm, 默认(2000-fCarWidth/2)mm float fRightDistance; //车右侧到棋盘格的横向距离,单位mm, 默认(2000-fCarWidth/2)mm float fVisionField; //视野范围,单位mm,大车默认20000mm, 模型车8000mm float fBigChessBoardWidth; //大棋盘格宽度,单位mm, 默认800mm(如果是缩小版的棋盘格80mm) float fSmallChessBoardWidth; //小棋盘格高度,单位mm, 默认400mm(如果是缩小版的棋盘格40mm) float fFusionAngle; //融合角度,默认60度 }FisheyeCameraCalibration; /* * 函数功能:获取算法库版本号 * 输入参数:pAlglibVersion-算法库版本号 * 输出参数:pAlglibVersion-算法库版本号 * 返回值:0-成功,-1-失败 */ int MvGetAlglibVersion(char* pAlglibVersion); //算法结果回调函数 typedef void (*AlgResultProcessFunc)(int nDataChannel, ObjectTrackEventResult* pObjectTrackEventResult, void *pPrivData); //车道线结果回调函数 typedef void (*AlgLaneLineProcessFunc)(DrawPointInfo* pPointInfo, void *pPrivData); /* * 函数功能:目标跟踪事件检测初始化 * 输入参数:pObjectEventDetectConf-事件检测配置信息,nStartDetectChannel-启动检测通道类型nStartDetectChannel=ADAS_DETECT_CHANNEL|BSD_DETECT_CHANNEL|DMS_DETECT_CHANNEL * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvObjectEventDetectInit(ObjectEventDetectConfig *pObjectEventDetectConf, int nStartDetectChannel); /* * 函数功能:设置算法结果回调函数 * 输入参数:nDataChannel-通道类型,0-adas,1-bsd(从后往前),2-dsm,3-bsd(从前往后),4-belt pFunc--算法结果回调函数, pPrivData-私有信息 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetAlgResultFuncCallback(int nDataChannel,AlgResultProcessFunc pFunc, void *pPrivData); /* * 函数功能:设置算法车道线回调函数 * 输入参数:pFunc--算法车道线回调函数, pPrivData-私有信息 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetAlgLaneLineFuncCallback(AlgLaneLineProcessFunc pFunc, void *pPrivData); /* 函数功能:目标跟踪事件检测(每帧循环调用,结果在回调函数中返回) * 输入参数:nDataChannel-通道类型,0-adas,1-bsd(从后往前),2-dsm,3-bsd(从前往后),4-belt pImageDataInfo--图像数据(adas,bsd:1280*720,dsm:1280*720), pCarInfo-车身信息 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvObjectEventDetect(int nDataChannel, VideoFrameDataInfo* pImageDataInfo, CarInfoInput* pCarInfo); /* * 函数功能:目标跟踪事件检测释放 * 输入参数:无 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvObjectEventDetectUnInit(); //////////////////////////////////////////////////////////////////////////// /* * 函数功能:相机标定(固定灭点) * 输入参数:pCameraCalibration-相机内外参 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvCameraCalibration(CameraCalibration* pCameraCalibration); /* * 函数功能:自学习相机标定 * 输入参数:pCameraCalibration-相机内外参 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvAutoCameraCalibration(CameraCalibration* pCameraCalibration); /* * 函数功能:手动相机标定(手动4点标定,只有adas通道会用到) * 输入参数:pCameraCalibration-相机外参,pCalibrationPoint-标定手动绘制的4个坐标点 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvManualCameraCalibration(CameraCalibration* pCameraCalibration, CalibrationPoint* pCalibrationPoint); /* * 函数功能:获取相机标定信息 * 输入参数:pCameraCalibration-相机内外参 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvGetCameraCalibrationInfo(CameraCalibration* pCameraCalibration); /* * 函数功能:获取是否自标定完成 * 输入参数:无 * 输出参数:无 * 返回值:0-否,1-是 */ int MvGetSelfCalibrationStatus(); /* * 函数功能:获取灭点 * 输入参数:无 * 输出参数:pCalibrationPoint-灭点(基于1280x720图像坐标) * 返回值:无 */ void MvGetVanishPoint(CalibrationPoint* pCalibrationPoint); /* * 函数功能:设置灭点 * 输入参数:pCalibrationPoint-灭点(基于1280x720图像坐标) * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetVanishPoint(CalibrationPoint* pCalibrationPoint); //////////////////////////////////////////////////////////////////////////// /* * 函数功能:设置bsd报警区域 * 输入参数:nDataChannel-通道类型,1-bsd(从后往前),3-bsd(从前往后),pBsdWarnRegion-bsd报警区域 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetBsdWarnRegion(int nDataChannel, BsdWarnRegion* pBsdWarnRegion); /* * 函数功能:bsd相机标定 * 输入参数:nDataChannel-通道类型,1-bsd(从后往前),3-bsd(从前往后),pCameraCalibration-相机内外参,pVanishPoint-灭点,pBsdWarnDistance-bsd报警距离 * 输出参数:pBsdWarnRegion-bsd报警区域 * 返回值:0-成功,-1-失败 */ int MvBsdCalibration(int nDataChannel, CameraCalibration* pCameraCalibration, CalibrationPoint* pVanishPoint, BsdWarnDistance* pBsdWarnDistance, BsdWarnRegion* pBsdWarnRegion); /* * 函数功能:获取bsd灭点位置 * 输入参数:pBsdVanishPt-bsd灭点位置 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvGetBsdVanishPoint(int nDataChannel, CalibrationPoint* pBsdVanishPt) ; /* * 函数功能:设置超员报警区域 * 输入参数:tRegionPoint-超员报警区域 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetOverBoardWarnRegion(CalibrationPoint tRegionPoint[4]); //////////////////////////////////////////////////////////////////////////// /* * 函数功能:设置dsm检测区域起始位置 * 输入参数:pCropPoint-dsm检测区域起始位置 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetDsmCropPosition(CalibrationPoint* pCropPoint); /* * 函数功能:获取dsm检测区域位置 * 输入参数:无 * 输出参数:pPointLeftTop-dsm检测区域左上位置,pPointRightBottom-dsm检测区域右下位置 * 返回值:0-成功,-1-失败 */ int MvGetDsmCropRegion(CalibrationPoint* pPointLeftTop, CalibrationPoint* pPointRightBottom); /* * 函数功能:获取jpg人脸特征 * 输入参数:pJpgImageData-jpg图像地址,nJpgImageDataLen-jpg图像大小 * 输出参数:pFaceFeatureInfo-jpg人脸特征信息 * 返回值:0-成功,-1-失败 */ int MvGetJpgFaceFeature(unsigned char* pJpgImageData, int nJpgImageDataLen, FaceFeatureInfo* pFaceFeatureInfo); /* * 函数功能:获取录入人脸特征 * 输入参数:pImageDataInfo-实时图像数据 * 输出参数:pFaceFeatureInfo-人脸特征信息 * 返回值:0-成功,-1-失败 */ int MvGetFaceFeature(VideoFrameDataInfo* pImageDataInfo, FaceFeatureInfo* pFaceFeatureInfo); /* * 函数功能: 获取人脸认证结果 * 输入参数: pFaceFeatureInfo1-实时人脸特征,nFeatureNum1-实时人脸特征数目,pFaceFeatureInfo2-录入的人脸特征,nFeatureNum2-录入的人脸特征数目 * 输出参数: 无 * 返回值: 0-认证成功(同一个人),-1-认证失败 (不是同一个人) */ int MvGetFaceVerifyResult(FaceFeatureInfo* pFaceFeatureInfo1, int nFeatureNum1, FaceFeatureInfo* pFaceFeatureInfo2, int nFeatureNum2); /* * 函数功能: 获取DSM标定信息 * 输入参数: 无 * 输出参数: pYaw-偏转角(左正右负),pPitch-俯仰角(上正下负) * 返回值: 0-成功,-1-失败 */ int MvGetDsmCalibration(float* pYaw, float* pPitch); /* * 函数功能: 设置DSM标定信息 * 输入参数: 无 * 输出参数: fYaw-偏转角(左正右负),fPitch-俯仰角(上正下负) * 返回值: 0-成功,-1-失败 */ int MvSetDsmCalibration(float fYaw, float fPitch); /* * 函数功能: DSM标定 * 输入参数: 无 * 输出参数: pPointLeftTop-dsm检测区域左上位置,fYaw-偏转角(左正右负),fPitch-俯仰角(上正下负) * 返回值: 0-成功,-1-失败 */ int MvDsmCalibration(CalibrationPoint* pPointLeftTop, float* pYaw, float* pPitch); /* * 函数功能:设置事件报警参数配置(必须在初始化函数后调用) * 输入参数:pEventWarnParamConfig-事件报警参数配置 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetEventWarnParamConfig(EventWarnParamConfig *pEventWarnParamConfig); /* * 函数功能:获取事件报警参数配置(必须在初始化函数后调用) * 输入参数:无 * 输出参数:pEventWarnParamConfig-事件报警参数配置 * 返回值:0-成功,-1-失败 */ int MvGetEventWarnParamConfig(EventWarnParamConfig *pEventWarnParamConfig); /* * 函数功能:设置打印接口 * 输入参数:bPrintf-是否打印 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetPrintf(bool bPrintf); /* * 函数功能:设置签名接口(在初始化函数之前调用) * 输入参数:szSignPath-签名写入路径 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetSignPath(char szSignPath[256]); /* * 函数功能:设置授权服务器地址(在初始化函数之前调用) * 输入参数:szAuthHost-授权服务器地址 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetAuthHost(char szAuthHost[256]); /* * 函数功能:获取授权认证状态 * 输入参数:无 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvGetAuthStatus(); /* * 函数功能: 获取芯片ID * 输入参数: pChipId-芯片ID,32个字节长度 * 输出参数: 无 * 返回值: 0-成功,-1-失败 */ int MvGetAuthChipId(unsigned char* pChipId); /* * 函数功能:获取车距线坐标 * 输入参数:fDistance-车距线距离(单位:mm,建议10米),fLaneWidth-车道宽度(单位:mm,建议3米) * 输出参数:pLinePoint-车距线两个端点图像坐标 * 返回值:0-成功,-1-失败 */ int MvGetDistanceLine(float fDistance, float fLaneWidth, VirtualLinePoint* pLinePoint); /* * 函数功能:获取虚拟车道线坐标 * 输入参数:fNearDistance-近端线距离(单位:mm,建议10米),fFarDistance-远端线距离(单位:mm,建议30米),fLaneWidth-车道宽度(单位:mm,建议3米) * 输出参数:pLeftLinePoint-左侧虚拟车道线两个端点图像坐标,pRightLinePoint-右侧虚拟车道线两个端点图像坐标 * 返回值:0-成功,-1-失败 */ int MvGetVirtualLaneLine(float fNearDistance, float fFarDistance, float fLaneWidth, VirtualLinePoint* pLeftLinePoint, VirtualLinePoint* pRightLinePoint); /* * 函数功能:获取最小车距 * 输入参数:无 * 输出参数:无 * 返回值:fDistance-最小车距(单位:mm) */ float MvGetNearDistance(); /* * 函数功能:设置fcw报警灵敏 * 输入参数:nFcwSensitivity-灵敏度等级,0-最低灵敏度,1-中灵敏度,2-高灵敏度 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetFcwWarnSensitivity(int nFcwSensitivity); /* * 函数功能:获取授权功能类型 * 输入参数:无 * 输出参数:无 * 返回值:授权功能类型 */ int MvGetAuthFunctionType(); /* * 函数功能: 设置imei ID * 输入参数: chImeiId-芯片ID,16个字节,十六进制表示 * 输出参数: 无 * 返回值: 0-成功,-1-失败 */ int MvSetImeiId(unsigned char chImeiId[16]); /* * 函数功能:设置dsm标定模式 * 输入参数:nMode-0-表示自动模式,1-表示手动模式, fVelocityThreshold-自标定速度阈值,fTimeThreshold-自标定时间阈值,fAngleThreshold-自标定角度阈值 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetDsmCalibrationMode(int nMode, float fVelocityThreshold, float fTimeThreshold, float fAngleThreshold); /* 函数功能:360图像融合 * 输入参数:pInImageDataInfo--4路输入图像数据(1280*720),顺序分别是0-前, 1-右, 2-后, 3-左, 需要保证4路相机同步,pCarInfo-车身信息 * 输出参数:pOutImageDataInfo-融合图像数据(640x640),需要在外部分配内存空间 * 返回值:0-成功,-1-失败 */ int MvImageFusion(VideoFrameDataInfo* pInImageDataInfo[4], VideoFrameDataInfo* pOutImageDataInfo, CarInfoInput* pCarInfo); /* 函数功能:360图像融合标定 * 输入参数:pCalibrationConfigPathName-标定文件路径名称,pInImageDataInfo--4路带有棋盘格的输入图像数据(1280*720),顺序分别是0-前, 1-右, 2-后, 3-左,pCameraCalibration-相机内外参,pImagePoints[4][8]-手动标定点,nMode-0手动标定,1自动标定,pCalibrationRectRegion-自动标定矩形区域 * 输出参数:pDeviation-标定误差,一般>10表示误差很大,说明参数有问题,需要重新标定, pErrorInfo-360自动标定错误返回信息,pOutImageDataInfo-自动标定返回图像 * 返回值:0-成功,-1-失败 */ int MvImageFusionCalibration(char* pCalibrationConfigPathName, VideoFrameDataInfo* pInImageDataInfo[4], FisheyeCameraCalibration* pCameraCalibration, CalibrationFloatPoint* pImagePoints, int nMode,float* pDeviation, CalibrationRectRegion* pCalibrationRectRegion, CalibrationErrorInfo* pErrorInfo, VideoFrameDataInfo* pOutImageDataInfo); /* * 函数功能:启动授权 * 输入参数:nStartDetectChannel-启动检测功能类型nStartDetectChannel=ADAS_FUNCTION_TYPE|BSD_FUNCTION_TYPE|DSM_FUNCTION_TYPE|SECOND_BSD_FUNCTION_TYPE,nMode-是否修改授权,0-不修改,1-修改 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvReAuthorization(int nStartDetectChannel); /* * 函数功能:启动停止连接授权服务器 * 输入参数:bConnectAuthServer-1-启动连接, 0-停止连接 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvConnectAuthServer(bool bConnectAuthServer); /* * 函数功能:设置是否tsr检测 * 输入参数:bSetTsrDetect-是否tsr检测 * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetTsrDetect(bool bSetTsrDetect); /* * 函数功能:设置检测通道(最大同时支持4个通道) * 输入参数:nDetectChannel-检测通道类型nDetectChannel=RIGHT_BSD_FRONT_DETECT_CHANNEL|RIGHT_BSD_REAR_DETECT_CHANNEL|LEFT_BSD_FRONT_DETECT_CHANNEL|LEFT_BSD_REAR_DETECT_CHANNEL * 输出参数:无 * 返回值:0-成功,-1-失败 */ int MvSetDetectChannel(int nDetectChannel); #ifdef __cplusplus } #endif #endif // _OBJECT_EVENT_DETECT_H_