138 lines
5.0 KiB
C
138 lines
5.0 KiB
C
/*
|
||
* 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物体
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
VZNLAPI int VzNL_BeginDetect3DObject(VZNLHANDLE hDevice);
|
||
|
||
/// @brief
|
||
/// 设置检测距离
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "nMin_mm">[in]最小距离</param>
|
||
/// <param name = "nMax_mm">[in]最大距离</param>
|
||
/// @return 返回0为正确,失败返回错误码
|
||
VZNLAPI int VzNL_ConfigDetect3DObjectDistance(VZNLHANDLE hDevice, int nMin_mm, int nMax_mm);
|
||
|
||
/// @brief
|
||
/// 设置检测阈值
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "dMinTh">[in]最小误差mm</param>
|
||
/// <param name = "dMaxTh">[in]最大误差</param>
|
||
/// <param name = "dPercent">[in]误差百分百</param>
|
||
VZNLAPI int VzNL_ConfigDetect3DObjectThres(VZNLHANDLE hDevice, double dMinTh, double dMaxTh, double dPercent);
|
||
|
||
/// @brief
|
||
/// 设置最小检测边数
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "nSideCnt">[in]设置最小边数</param>
|
||
VZNLAPI int VzNL_ConfigDetect3DObjectMinEdges(VZNLHANDLE hDevice, int nSideCount);
|
||
|
||
/// @brief
|
||
/// 设置检测物体模型
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "p3DObjectDesc">[in]要检测的3D模型数据</param>
|
||
/// @return 返回0为正确
|
||
VZNLAPI int VZNL_SetDetectObject(VZNLHANDLE hDevice, SVzNL3DObjectDesc* p3DObjectDesc, int nObjectCount);
|
||
|
||
/// @brief
|
||
/// 检测一个立体的物体
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// @return 检测成功返回0
|
||
VZNLAPI int VzNL_Detect3DObject(VZNLHANDLE hDevice);
|
||
|
||
/// @brief
|
||
/// 获取检测到的物体。
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// @return 返回结果个数
|
||
VZNLAPI int VzNL_Get3DObjectResultCount(VZNLHANDLE hDevice);
|
||
|
||
/// @brief
|
||
/// 获取模型数据点
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "nResultIdx">[in]结果索引</param>
|
||
/// <param name = "pp3DObjDesc">[out]3D结果数据</param>
|
||
/// @reutrn 错误码,0为成功
|
||
VZNLAPI int VzNL_Get3DObject3DResult(VZNLHANDLE hDevice, int nResultIdx, SVzNL3DObjectDesc** pp3DObjDesc);
|
||
|
||
/// @brief
|
||
/// 获取模型数据点
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "nResultIdx">[in]结果索引</param>
|
||
/// <param name = "pp2DObjDesc">[out]2D结果数据</param>
|
||
/// @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
|
||
/// 获取模型数据的抓取点。
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "nResultIdx">[in]结果索引</param>
|
||
/// <param name = "p3DGrabPoint">[out]三维抓取点</param>
|
||
/// @reutrn 错误码,0为成功
|
||
VZNLAPI int VzNL_Get3DObjectResultGrabPoint(VZNLHANDLE hDevice, int nResultIdx, SVzNL3DPoint* p3DGrabPoint);
|
||
|
||
/// @brief
|
||
/// 获取检测的线条2D结果
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "p2DPoint">[out]2D线,内存空间由用户分配</param>
|
||
/// <param name = "pnCount">[in/out]传入:用户分配的SVzNL2DLineResult的结构个数;传出:用户需要分配多少个SVzNL2DLineResult</param>
|
||
/// @return 成功返回0,失败返回错误码。
|
||
VZNLAPI int VzNL_Get3DObjectLine2DResult(VZNLHANDLE hDevice, SVzNL2DLineResult* p2DLine, int* pnCount);
|
||
|
||
/// @brief
|
||
/// 获取检测的线条3D结果
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// <param name = "p3DPoint">[out]3D线,内存空间由用户分配</param>
|
||
/// <param name = "pnCount">[in/out]传入:用户分配的SVzNL3DLineResult的结构个数;传出:用户需要分配多少个SVzNL3DLineResult</param>
|
||
/// @return 成功返回0,失败返回错误码
|
||
VZNLAPI int VzNL_Get3DObjectLine3DResult(VZNLHANDLE hDevice, SVzNL3DLineResult* p3DLine, int* pnCount);
|
||
|
||
/// @brief
|
||
/// 连续检测3D模型数据
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// @return 成功返回0,失败返回错误码
|
||
VZNLAPI int VzNL_StartAutoDetect3DObject(VZNLHANDLE hDevice, VzNL_Output3DObjectResultCB pResultCB, void* pParam);
|
||
VZNLAPI int VzNL_StopAutoDetect3DObject(VZNLHANDLE hDevice);
|
||
|
||
/// @brief
|
||
/// 结束检测3D物体
|
||
/// <param name = "hDevice">[in]设备句柄</param>
|
||
/// @return 错误码,0为成功
|
||
VZNLAPI int VzNL_EndDetect3DObject(VZNLHANDLE hDevice);
|
||
|
||
#endif //__VIZUM_DETECTED_3DOBJ_HEADER__
|