/* * Header: VZNL_Detect3DObject.h * Description:当前文件为伟景智能(Vizum)所研发的EyeCB板提供设置检测函数的接口。 * * Author: Mjw * Date: 2018/08/28 */ #ifndef __VIZUM_DETECTED_3DOBJ_HEADER__ #define __VIZUM_DETECTED_3DOBJ_HEADER__ #include "VZNL_Export.h" #include "VZNL_Types.h" /** * @brief 获取自动检测结果 * @param [out] p3DPoint 3D数据 * @param [out] p2DPoint 2D数据 * @param [out] nCount 数据个数 * @param [out] nTimeStamp 时间戳 * @param [out] dTotleOffset 总偏移 * @param [out] dStep 单次偏移 * @param [out] pLeftImage 左图 * @param [out] pRightImage 右图 * @param [out] pParam 回调参数 */ typedef int(*VzNL_Output3DObjectResultCB)(SVzNL3DObjectDesc* p3DObjDesc, SVzNL3DObject2DResult* p2DObjDesc, int nObjCount, void* pParam); /// @brief /// 开始检测3D物体 /// [in]设备句柄 VZNLAPI int VzNL_BeginDetect3DObject(VZNLHANDLE hDevice); /// @brief /// 设置检测距离 /// [in]设备句柄 /// [in]设备句柄 /// [in]最小距离 /// [in]最大距离 /// @return 返回0为正确,失败返回错误码 VZNLAPI int VzNL_ConfigDetect3DObjectDistance(VZNLHANDLE hDevice, int nMin_mm, int nMax_mm); /// @brief /// 设置检测阈值 /// [in]设备句柄 /// [in]最小误差mm /// [in]最大误差 /// [in]误差百分百 VZNLAPI int VzNL_ConfigDetect3DObjectThres(VZNLHANDLE hDevice, double dMinTh, double dMaxTh, double dPercent); /// @brief /// 设置最小检测边数 /// [in]设备句柄 /// [in]设置最小边数 VZNLAPI int VzNL_ConfigDetect3DObjectMinEdges(VZNLHANDLE hDevice, int nSideCount); /// @brief /// 设置检测物体模型 /// [in]设备句柄 /// [in]要检测的3D模型数据 /// @return 返回0为正确 VZNLAPI int VZNL_SetDetectObject(VZNLHANDLE hDevice, SVzNL3DObjectDesc* p3DObjectDesc, int nObjectCount); /// @brief /// 检测一个立体的物体 /// [in]设备句柄 /// @return 检测成功返回0 VZNLAPI int VzNL_Detect3DObject(VZNLHANDLE hDevice); /// @brief /// 获取检测到的物体。 /// [in]设备句柄 /// @return 返回结果个数 VZNLAPI int VzNL_Get3DObjectResultCount(VZNLHANDLE hDevice); /// @brief /// 获取模型数据点 /// [in]设备句柄 /// [in]结果索引 /// [out]3D结果数据 /// @reutrn 错误码,0为成功 VZNLAPI int VzNL_Get3DObject3DResult(VZNLHANDLE hDevice, int nResultIdx, SVzNL3DObjectDesc** pp3DObjDesc); /// @brief /// 获取模型数据点 /// [in]设备句柄 /// [in]结果索引 /// [out]2D结果数据 /// @reutrn 错误码,0为成功 VZNLAPI int VzNL_Get3DObject2DResult(VZNLHANDLE hDevice, int nResultIdx, SVzNL3DObject2DResult** pp2DObjDesc); /// @brief /// 释放3d结果 VZNLAPI int VzNL_Release3DObject3DResult(SVzNL3DObjectDesc** pp3DObjDesc); /// @brief /// 释放2d结果 VZNLAPI int VzNL_Release3DObject2DResult(SVzNL3DObject2DResult** pp2DObjDesc); /// @brief /// 获取模型数据的抓取点。 /// [in]设备句柄 /// [in]结果索引 /// [out]三维抓取点 /// @reutrn 错误码,0为成功 VZNLAPI int VzNL_Get3DObjectResultGrabPoint(VZNLHANDLE hDevice, int nResultIdx, SVzNL3DPoint* p3DGrabPoint); /// @brief /// 获取检测的线条2D结果 /// [in]设备句柄 /// [out]2D线,内存空间由用户分配 /// [in/out]传入:用户分配的SVzNL2DLineResult的结构个数;传出:用户需要分配多少个SVzNL2DLineResult /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_Get3DObjectLine2DResult(VZNLHANDLE hDevice, SVzNL2DLineResult* p2DLine, int* pnCount); /// @brief /// 获取检测的线条3D结果 /// [in]设备句柄 /// [out]3D线,内存空间由用户分配 /// [in/out]传入:用户分配的SVzNL3DLineResult的结构个数;传出:用户需要分配多少个SVzNL3DLineResult /// @return 成功返回0,失败返回错误码 VZNLAPI int VzNL_Get3DObjectLine3DResult(VZNLHANDLE hDevice, SVzNL3DLineResult* p3DLine, int* pnCount); /// @brief /// 连续检测3D模型数据 /// [in]设备句柄 /// @return 成功返回0,失败返回错误码 VZNLAPI int VzNL_StartAutoDetect3DObject(VZNLHANDLE hDevice, VzNL_Output3DObjectResultCB pResultCB, void* pParam); VZNLAPI int VzNL_StopAutoDetect3DObject(VZNLHANDLE hDevice); /// @brief /// 结束检测3D物体 /// [in]设备句柄 /// @return 错误码,0为成功 VZNLAPI int VzNL_EndDetect3DObject(VZNLHANDLE hDevice); #endif //__VIZUM_DETECTED_3DOBJ_HEADER__