GrabBag/SDK/VzNLSDK/Inc/VZNL_Detect3DObject.h

138 lines
5.0 KiB
C
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.

/*
* 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__