205 lines
6.3 KiB
C
205 lines
6.3 KiB
C
/*
|
||
* Header: VZNL_DetectCircle.h
|
||
* Description:当前文件为伟景智能(Vizum)所研发的EyeCB板提供检测圆形的函数接口。
|
||
* Sample:
|
||
* VzNL_BeginDetectCircle();
|
||
* xxxxxxxxxxx
|
||
* VzNL_EndDetectCircle();
|
||
* Author: Mjw
|
||
* Date: 2018/08/28
|
||
*/
|
||
|
||
#ifndef __VIZUM_DETECTED_CIRCLE_HEADER__
|
||
#define __VIZUM_DETECTED_CIRCLE_HEADER__
|
||
|
||
#include "VZNL_Export.h"
|
||
#include "VZNL_Types.h"
|
||
|
||
/**
|
||
* @brief
|
||
* @param [out] p3DCircle 检测出的圆形3D结果
|
||
* @param [out] p2DCircle 检测出的圆形2D结果
|
||
* @param [out] nCount 结果个数
|
||
* @param [out] pLeftImage 左图
|
||
* @param [out] pRightImage 右图
|
||
* @param [out] pParam 传入参数
|
||
*/
|
||
typedef int(*VzNL_GetAutoDetectCircleResultCB)(SVzNL3DCircleObjectResult* p3DCircle, SVzNL2DCircleObjectResult* p2DCircle, unsigned int nCount, SVzNLImageData* pLeftImage, SVzNLImageData* pRightImage, void* pParam);
|
||
|
||
/**
|
||
* @brief 创建圆形检测工具
|
||
* @param [in] hDevice 设备句柄
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_BeginDetectCircle(VZNLHANDLE hDevice);
|
||
|
||
/**
|
||
* @brief 清空所有的圆
|
||
* @param [in] hDevice 设备句柄
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_ClearCircleDetectParam(VZNLHANDLE hDevice);
|
||
|
||
/**
|
||
* @brief 增加单圆检测
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [in] nCircleR 圆的半径
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_AddCircleDetectParam(VZNLHANDLE hDevice, int nCircleR);
|
||
|
||
/**
|
||
* @brief 增加同心圆检测
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [in] pnArrayCircleR 圆形半径array
|
||
* @param [in] nCircleNum 圆的个数arrray的个数
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_AddConcentricCircleDetectParam(VZNLHANDLE hDevice, int* pnArrayCircleR, int nCircleNum);
|
||
|
||
/**
|
||
* @brief 设置钢管检测参数
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [in] nMinCircleR 最小圆的半径
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_SetSteelTubeDetectParam(VZNLHANDLE hDevice, int nMinCircleR);
|
||
|
||
/**
|
||
* @brief 移除检测参数
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [in] nRemoveIdx 移除第几个参数
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_RemoveCircleDetectParam(VZNLHANDLE hDevice, unsigned int nRemoveIdx);
|
||
|
||
/**
|
||
* @brief 更新检测参数
|
||
* @param [in] hDevice 设备句柄
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_UpdateCircleDetectParam(VZNLHANDLE hDevice);
|
||
|
||
/**
|
||
* @brief 获取检测圆形参数的个数
|
||
* @name [in] hDevice 设备句柄
|
||
* @name [out] pnErrorCode 错误码 nullptr 时表示不获取
|
||
* @return 返回圆的个数
|
||
*/
|
||
VZNLAPI unsigned int VzNL_GetCircleDetectParamCount(VZNLHANDLE hDevice, int* pnErrorCode);
|
||
|
||
/**
|
||
* @brief 获取参数中圆的个数
|
||
* @name [in] hDevice 设备句柄
|
||
* @name [in] nIdx 获取第几个设备的圆的个数
|
||
* @name [out] pnErrorCode 错误码 nullptr 时表示不获取
|
||
* @return 返回圆的个数
|
||
*/
|
||
VZNLAPI int VzNL_GetCircleDetectParamCircleCount(VZNLHANDLE hDevice, unsigned int nIdx, int* pnErrorCode);
|
||
|
||
/**
|
||
* @brief 获取检测参数中圆的参数
|
||
* @name [in] hDevice 设备句柄
|
||
* @name [in] nIdx 获取第几个设备的圆的个数
|
||
* @name [out] peType 圆的类型
|
||
* @name [out] pnArrayCircleR 圆半径array
|
||
* @name [out] pnArrayMaxRDeviation 圆的误差array
|
||
* @name [out] nCircleNum 圆的个数
|
||
* @return 返回错误码,0表示成功,其他为失败,请从错误数据中获取。
|
||
*/
|
||
VZNLAPI int VzNL_GetCircleDetectParam(VZNLHANDLE hDevice, unsigned int nIdx, EVzNL3DCircleType* peType, int* pnArrayCircleR, int* pnArrayMaxRDeviation, int nCircleNum);
|
||
|
||
/**
|
||
* @brief 设置输出检测结果参数
|
||
* @name [in] hDevice 设备句柄
|
||
* @name [in] dPointInterval 输出点间隔
|
||
* @name [in] bDoProjection 是否投影到平面
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_SetCircleDetectOutputParam(VZNLHANDLE hDevice, double dPointInterval, VzBool bDoProjection);
|
||
VZNLAPI int VzNL_GetCircleDetectOutputParam(VZNLHANDLE hDevice, double* pdPointInterval, VzBool* pbDoProjection);
|
||
|
||
VZNLAPI int VzNL_SetCircleThirdDetectParam(VZNLHANDLE hDevice, float fParam[3]);
|
||
VZNLAPI int VzNL_GetCircleThirdDetectParam(VZNLHANDLE hDevice, float fParam[3]);
|
||
|
||
/**
|
||
* @brief 检测圆形
|
||
* @param [in] hDevice 设备句柄
|
||
* @return 返回0表示正确
|
||
*/
|
||
VZNLAPI int VzNL_DetectCircle(VZNLHANDLE hDevice);
|
||
|
||
/**
|
||
* @brief 获取结果中圆形的个数
|
||
* @param [in] hDevice 设备句柄
|
||
* @return 返回圆形个数
|
||
*/
|
||
VZNLAPI int VzNL_GetCircleResultCount(VZNLHANDLE hDevice);
|
||
|
||
/**
|
||
* @brief 获取圆的2D结果
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [out] pp2DCircle 2D圆,SDK内部分配,请调用VzNL_ReleaseCircle2DResult进行数据销毁
|
||
* @param [out] pnCount 传出2D圆的个数
|
||
* @return 成功返回0,失败返回错误码。
|
||
*/
|
||
VZNLAPI int VzNL_GetCircle2DResult(VZNLHANDLE hDevice, SVzNL2DCircleObjectResult** pp2DCircle, int* pnCount);
|
||
|
||
/**
|
||
* @brief 释放2D结果
|
||
* @param [in] p2DCircle 2D圆结果
|
||
* @param [in] nCount 2D圆个数
|
||
* @return 成功返回0,失败返回错误码。
|
||
*/
|
||
VZNLAPI void VzNL_ReleaseCircle2DResult(SVzNL2DCircleObjectResult* p2DCircle, int nCount);
|
||
|
||
/**
|
||
* @brief 获取圆的3D结果
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [out] pp3DCircle 3D圆,SDK内部分配,请调用VzNL_ReleaseCircle3DResult进行数据销毁
|
||
* @param [out] pnCount 传出3D圆的个数
|
||
* @return 成功返回0,失败返回错误码。
|
||
*/
|
||
VZNLAPI int VzNL_GetCircle3DResult(VZNLHANDLE hDevice, SVzNL3DCircleObjectResult** pp3DCircle, int* pnCount);
|
||
|
||
/**
|
||
* @brief 释放3D结果
|
||
* @param [in] p3DCircle 3D圆结果
|
||
* @param [in] nCount 3D圆个数
|
||
* @return 成功返回0,失败返回错误码。
|
||
*/
|
||
VZNLAPI void VzNL_ReleaseCircle3DResult(SVzNL3DCircleObjectResult* p3DCircle, int nCount);
|
||
|
||
/**
|
||
* @brief 获取结果图像
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [out] ppLeftImageData 左图数据 使用VzNL_ReleaseImageData 进行释放图像
|
||
* @param [out] ppRightImageData 右图数据 使用VzNL_ReleaseImageData 进行释放图像
|
||
* @return 成功返回0,失败返回错误码。
|
||
*/
|
||
VZNLAPI int VzNL_GetCircleImageResult(VZNLHANDLE hDevice, SVzNLImageData** ppLeftImageData, SVzNLImageData** ppRightImageData);
|
||
|
||
/**
|
||
* @brief 开始自动检测圆形
|
||
* @param [in] hDevice 设备句柄
|
||
* @param [in] pCB 回调函数
|
||
* @param [in] pCBParam 回调参数
|
||
* @return 成功返回0,失败返回错误码。
|
||
*/
|
||
VZNLAPI int VzNL_StartAutoDetectCircle(VZNLHANDLE hDevice, VzNL_GetAutoDetectCircleResultCB pCB, void* pCBParam);
|
||
|
||
/**
|
||
* @brief 结束自动检测圆形
|
||
* @param [in] hDevice 设备句柄
|
||
* @return 成功返回0,失败返回错误码。
|
||
*/
|
||
VZNLAPI int VzNL_StopAutoDetectCircle(VZNLHANDLE hDevice);
|
||
|
||
/**
|
||
* @brief 销毁圆形检测工具
|
||
* @param [in] hDevice 设备句柄
|
||
*/
|
||
VZNLAPI int VzNL_EndDetectCircle(VZNLHANDLE hDevice);
|
||
|
||
#endif //__VIZUM_DETECTED_LINE_HEADER__
|