GrabBag/SDK/VzNLSDK/Inc/VZNL_DetectCircle.h

205 lines
6.3 KiB
C
Raw Normal View History

2025-07-23 01:35:14 +08:00
/*
* Header: VZNL_DetectCircle.h
* Description:<EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD>Ϊΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Vizum)<EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>EyeCB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>εĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڡ<EFBFBD>
* 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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] p2DCircle <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>2D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] nCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] pLeftImage <EFBFBD><EFBFBD>ͼ
* @param [out] pRightImage <EFBFBD><EFBFBD>ͼ
* @param [out] pParam <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef int(*VzNL_GetAutoDetectCircleResultCB)(SVzNL3DCircleObjectResult* p3DCircle, SVzNL2DCircleObjectResult* p2DCircle, unsigned int nCount, SVzNLImageData* pLeftImage, SVzNLImageData* pRightImage, void* pParam);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_BeginDetectCircle(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Բ
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_ClearCircleDetectParam(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nCircleR Բ<EFBFBD>İ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_AddCircleDetectParam(VZNLHANDLE hDevice, int nCircleR);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] pnArrayCircleR Բ<EFBFBD>ΰarray
* @param [in] nCircleNum Բ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>arrray<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_AddConcentricCircleDetectParam(VZNLHANDLE hDevice, int* pnArrayCircleR, int nCircleNum);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>øֹܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nMinCircleR <EFBFBD><EFBFBD>СԲ<EFBFBD>İ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_SetSteelTubeDetectParam(VZNLHANDLE hDevice, int nMinCircleR);
/**
* @brief <EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nRemoveIdx <EFBFBD>Ƴ<EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_RemoveCircleDetectParam(VZNLHANDLE hDevice, unsigned int nRemoveIdx);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_UpdateCircleDetectParam(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @name [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @name [out] pnErrorCode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> nullptr ʱ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI unsigned int VzNL_GetCircleDetectParamCount(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @name [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @name [in] nIdx <EFBFBD><EFBFBD>ȡ<EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @name [out] pnErrorCode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> nullptr ʱ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCircleDetectParamCircleCount(VZNLHANDLE hDevice, unsigned int nIdx, int* pnErrorCode);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
* @name [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @name [in] nIdx <EFBFBD><EFBFBD>ȡ<EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @name [out] peType Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @name [out] pnArrayCircleR Բ<EFBFBD>array
* @name [out] pnArrayMaxRDeviation Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>array
* @name [out] nCircleNum Բ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ȡ<EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCircleDetectParam(VZNLHANDLE hDevice, unsigned int nIdx, EVzNL3DCircleType* peType, int* pnArrayCircleR, int* pnArrayMaxRDeviation, int nCircleNum);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @name [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @name [in] dPointInterval <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @name [in] bDoProjection <EFBFBD>Ƿ<EFBFBD>ͶӰ<EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_DetectCircle(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>εĸ<EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCircleResultCount(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD>ȡԲ<EFBFBD><EFBFBD>2D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] pp2DCircle 2<EFBFBD><EFBFBD>SDK<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VzNL_ReleaseCircle2DResult<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] pnCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCircle2DResult(VZNLHANDLE hDevice, SVzNL2DCircleObjectResult** pp2DCircle, int* pnCount);
/**
* @brief <EFBFBD>ͷ<EFBFBD>2D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] p2DCircle 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nCount 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI void VzNL_ReleaseCircle2DResult(SVzNL2DCircleObjectResult* p2DCircle, int nCount);
/**
* @brief <EFBFBD><EFBFBD>ȡԲ<EFBFBD><EFBFBD>3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] pp3DCircle 3<EFBFBD><EFBFBD>SDK<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VzNL_ReleaseCircle3DResult<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] pnCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCircle3DResult(VZNLHANDLE hDevice, SVzNL3DCircleObjectResult** pp3DCircle, int* pnCount);
/**
* @brief <EFBFBD>ͷ<EFBFBD>3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] p3DCircle 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nCount 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI void VzNL_ReleaseCircle3DResult(SVzNL3DCircleObjectResult* p3DCircle, int nCount);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] ppLeftImageData <EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʹ<EFBFBD><EFBFBD>VzNL_ReleaseImageData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͼ<EFBFBD><EFBFBD>
* @param [out] ppRightImageData <EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʹ<EFBFBD><EFBFBD>VzNL_ReleaseImageData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ͼ<EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCircleImageResult(VZNLHANDLE hDevice, SVzNLImageData** ppLeftImageData, SVzNLImageData** ppRightImageData);
/**
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] pCB <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] pCBParam <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_StartAutoDetectCircle(VZNLHANDLE hDevice, VzNL_GetAutoDetectCircleResultCB pCB, void* pCBParam);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_StopAutoDetectCircle(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_EndDetectCircle(VZNLHANDLE hDevice);
#endif //__VIZUM_DETECTED_LINE_HEADER__