GrabBag/SDK/VzNLSDK/Inc/VZNL_Utils.h

323 lines
12 KiB
C
Raw Normal View History

2025-07-23 01:35:14 +08:00
#ifndef __VIZUM_UTILS_HEADER__
#define __VIZUM_UTILS_HEADER__
/*****************************************************************************
* Vizum Detect SDK Utils *
* Copyright (C) 2022 Vizum Technology. *
* *
* This file is part of VizumSDK. *
* * *
* *
* @file VZNL_Utils.h *
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵķ<EFBFBD>ʽ *
* Details. *
* *
* @author Vizum *
* @email *
* @date 2022/07/03 *
* *
*----------------------------------------------------------------------------*
* Remark : Description *
*----------------------------------------------------------------------------*
* Change History : *
* <Date> | <Version> | <Author> | <Description> *
*----------------------------------------------------------------------------*
* 2022/07/03 | 3.6.17.10 | Vizum | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD> *
*----------------------------------------------------------------------------*
* *
*****************************************************************************/
#include "VZNL_Export.h"
#include "VZNL_Types.h"
typedef struct
{
union {
struct
{
unsigned int bNoFirewallToken : 1; //< <20>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>ǽȨ<C7BD><C8A8>
unsigned int bNetWork100M : 1; //< <20><EFBFBD>к<EFBFBD><D0BA><EFBFBD> 100M <20><><EFBFBD><EFBFBD>
unsigned int bSameMACDevice : 1; //< <20><><EFBFBD><EFBFBD>ͬMAC<41><43><EFBFBD>
unsigned int bVLANError : 1; //< IP<49><50><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>
unsigned int bIsAdmin : 1; //< <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ԱȨ<D4B1><C8A8>
unsigned int bOpenJumboFrame : 1; //< <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD>֡
unsigned int bIPConflict : 1; //< <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7>ͻ
};
unsigned int nCheckMask; //< <20><>Ϊ0ʱ<30><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>
};
unsigned int nHostNetCardCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SVzNetCardInfo* sHostNetCard; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
unsigned int nSameMACDeviceCnt; //<2F><><EFBFBD><EFBFBD>ͬMAC<41><43><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
SVzNLEyeCBInfo* sSameMACDevice; //<2F><>ͬMAC<41><43><EFBFBD>豸IP<49>б<EFBFBD>
unsigned int nVLANErrorDeviceCnt; //IP<49><50><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
SVzNLEyeCBInfo* sVLANErrorDevice; //IP<49><50><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ε<EFBFBD><CEB5>豸IP<49>б<EFBFBD>
unsigned int nIPConflictDeviceCnt; //IP<49><50>ַ<EFBFBD><D6B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
SVzNLEyeCBInfo* sIPConflictDevice; //IP<49><50>ַ<EFBFBD><D6B7>ͻ<EFBFBD><CDBB><EFBFBD>豸IP<49>б<EFBFBD>
} SVzCheckPlatformInfo;
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>
* @param psPlatformInfo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>VzTrue˵<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VzFalse<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD>ĵط<EFBFBD>
*/
VZNLAPI int VzNL_CheckPlatform(SVzCheckPlatformInfo* psPlatformInfo);
/// @name <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9>߼<EFBFBD>
/// @{
/**
* @brief ʹ<EFBFBD>ù̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
* @param eDataType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param p3DPoint 3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nPointCount <EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @param sDepthMapParam <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ppImageData ͼ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_CreateDepthMapImage(EVzResultDataType eDataType, void* p3DPoint, unsigned int nPointCount, SVzDepthMapImgCtlPara* sDepthMapParam, SVzNLImageData** ppImageData);
/**
* @brief ʹ<EFBFBD>ù̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻҶ<EFBFBD>ͼ
* @param eDataType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param p3DPoint 3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nPointCount <EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @param fXYScale XY<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ppImageData ͼ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_CreateGrayImage(EVzResultDataType eDataType, void* p3DPoint, unsigned int nPointCount, float fXYScale, SVzNLImageData** ppImageData);
/// @}
/**
* @brief <EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>
* @param szFileName [in] Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ȫ·<EFBFBD><EFBFBD>
* @param ppImageData [out] <EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ
*/
VZNLAPI int VzNL_LoadImageFromFile(const char* szFileName, SVzNLImageData** ppImageData);
/**
* @brief <EFBFBD><EFBFBD>tif<EFBFBD>ļ<EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpszFile <EFBFBD>ļ<EFBFBD>ȫ·<EFBFBD><EFBFBD>
* @param nImageWidth ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nImageHeight ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param eDataType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param p3DPoint 3D<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_LoadDepthMapTiffImage(const char* lpszFile, unsigned int* nImageWidth, unsigned int* nImageHeight, SVzNL3DPointF* p3DPoint, unsigned int* nPointCount);
/**
* @brief <EFBFBD><EFBFBD>3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴΪTif<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
* @param lpszFile <EFBFBD>ļ<EFBFBD>ȫ·<EFBFBD><EFBFBD>
* @param nImageWidth ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nImageHeight ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param eDataType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param p3DPoint 3D<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_SaveDepthMapTiffImage(const char* lpszFile, unsigned int nImageWidth, unsigned int nImageHeight, EVzResultDataType eDataType, void* p3DPoint);
/// @name <20><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// @{
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼͼ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
* @param pImageData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> [<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
* @param pParam <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
*/
typedef void(*VzNL_OnOutputCloudPointAPData)(const SVzNLImageData* psImageData, const SVz3DPointMapTable* psPointMapTable, void* pParam);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Handle
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI VZNLPOINTCLOUDHANDLE VzNL_CreateCloudPointAPTool();
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Handle
*/
VZNLAPI int VzNL_AttachHandleForCloudPointAP(VZNLPOINTCLOUDHANDLE hCloudPointTool, VZNLHANDLE hDevice);
/**
* @brief <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>Handle
*/
VZNLAPI int VzNL_AttachDetectToolForCloudPointAP(VZNLPOINTCLOUDHANDLE hCloudPointTool, VZNLDETECTHANDLE hDetectHandle);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Handle
*/
VZNLAPI int VzNL_DetachHandleForCloudPointAP(VZNLPOINTCLOUDHANDLE hCloudPointTool);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3D<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>), <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><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VzNL_GetCloudPointAPParam
* @param hCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @param p3DPosition 3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nPointCount 3D<EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_SetCloudPointAPBaseLine(VZNLPOINTCLOUDHANDLE hCloudPointTool, SVzNL3DPosition* p3DPosition, unsigned int nPointCount);
/**
* @brief <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>ͼʱ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* @param hCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @param psDepthMapParam <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_SetCloudPointAPParam(VZNLPOINTCLOUDHANDLE hCloudPointTool, SVzDepthMapImgCtlPara* psDepthMapParam);
/**
* @brief <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>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* @param hCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @param bEnable VzTrue <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / VzFalse <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD>ģʽ:bEnable = VzTrue <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>ģʽ,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<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>
* U<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>ϵĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD>0<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_EnableCloudPointAPBaseLineMode(VZNLPOINTCLOUDHANDLE hCloudPointTool, VzBool bEnable);
VZNLAPI VzBool VzNL_IsEnableCloudPointAPBaseLineMode(VZNLPOINTCLOUDHANDLE hCloudPointTool);
/**
* @brief <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><EFBFBD><EFBFBD>ͼʱ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* @paramhCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @paramnMinImageWidth <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_SetCloudPointAPImageWidth(VZNLPOINTCLOUDHANDLE hCloudPointTool, unsigned int nMinImageWidth);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @paramhCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @psDepthMapParam [out] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCloudPointAPParam(VZNLPOINTCLOUDHANDLE hCloudPointTool, SVzDepthMapImgCtlPara* psDepthMapParam);
/**
* @brief <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>ͼʱ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* @paramhCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @pnImageHeight [out] <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
*/
VZNLAPI int VzNL_GetCloudPointAPImageHeight(VZNLPOINTCLOUDHANDLE hCloudPointTool, int* pnImageHeight);
/**
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><EFBFBD><EFBFBD>(Ŀǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> keResultDataType_Position)
* @param hCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @param eAfterProcType ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> kePointAfterProcType_DepthMap(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ) kePointAfterProcType_GrayPic(<EFBFBD>Ҷ<EFBFBD>ͼ)
* @param eDataType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SVzLaserLineData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param eDirect <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD><EFBFBD>
* @param pDepthMap <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>Ļص<EFBFBD>
* @param pParam <EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>0Ϊ<EFBFBD><EFBFBD><EFBFBD>󣬿<EFBFBD>ͨ<EFBFBD><EFBFBD>VzNL_GetErrorInfo <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
*/
VZNLAPI int VzNL_BeginCloudPointAfterProc(VZNLPOINTCLOUDHANDLE hCloudPointTool, EVzPointAfterProcType eAfterProcType, EVzResultDataType eDataType, EVzObjRunDirect eDirect, VzNL_OnOutputCloudPointAPData pDepthMap, void* pParam);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><EFBFBD><EFBFBD>(Ŀǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> keResultDataType_Position)
* @param hCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
* @param psLineData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_CloudPointAfterProc(VZNLPOINTCLOUDHANDLE hCloudPointTool, SVzLaserLineData* psLineData);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><EFBFBD><EFBFBD>
* @param hCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_EndCloudPointAfterProc(VZNLPOINTCLOUDHANDLE hCloudPointTool);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD><EFBFBD>ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hCloudPointTool <EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_DestroyCloudPointAPTool(VZNLPOINTCLOUDHANDLE hCloudPointTool);
/// @}
/// @name ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>
/// @{
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
* @param hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI VZNLIMAGEGENERATOR VzNL_CreateImageGenerator(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hImageGenerator ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
* @param eDataType <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ŀǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> keResultDataType_PointXYZRGBA <EFBFBD><EFBFBD> keResultDataType_PointGray
* keResultDataType_PointGray <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>Ϊ 8 bit <EFBFBD>Ҷ<EFBFBD>ͼ
* keResultDataType_PointGray <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>Ϊ 24 bit <EFBFBD><EFBFBD>ɫͼ
*/
VZNLAPI int VzNL_BeginPushPointToImageGenerator(VZNLIMAGEGENERATOR hImageGenerator, EVzResultDataType eDataType);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
* @param hImageGenerator ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
* @param psLineData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_PushPointToImageGenerator(VZNLIMAGEGENERATOR hImageGenerator, SVzLaserLineData* psLineData);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><EFBFBD><EFBFBD>
* @param hImageGenerator ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_EndPushPointToImageGenerator(VZNLIMAGEGENERATOR hImageGenerator);
/**
* @brief ͨ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
* @param hImageGenerator ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
* @param psLineData ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetImageFromImageGenerator(VZNLIMAGEGENERATOR hImageGenerator, SVzNLImageData** ppImageData);
/**
* @brief ͨ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
* @param hImageGenerator ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
* @param lpszFile <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> tif
*/
VZNLAPI int VzNL_SaveDepthMapImageFromImageGenerator(VZNLIMAGEGENERATOR hImageGenerator, const char* lpszFile);
/**
* @brief ͨ<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3D<EFBFBD><EFBFBD>
* @param hImageGenerator ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
* @param psLineData 3D<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_Find3DPointFrom2DPosForImageGenerator(VZNLIMAGEGENERATOR hImageGenerator, int nX, int nY, SVzNLPointXYZ* p3DPoint);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>񴴽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hImageGenerator ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_DestroyImageGenerator(VZNLIMAGEGENERATOR hImageGenerator);
/// @}
/// @name <20><>ϵͳ<CFB5><CDB3><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
/// @{
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰϵͳ<EFBFBD>б<EFBFBD>
* @param hDevice <EFBFBD>Handle
* @param pnCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @return ϵͳ<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI SVzSystemProjectInfo* VzNL_GetSystemPrjArray(VZNLHANDLE hDevice, int* pnCount);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hDevice <EFBFBD>Handle
* @param nCurSel Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>ϵͳΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ϵͳ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0Ϊ<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GetErrorString<EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_SwitchSystemPrj(VZNLHANDLE hDevice, int nCurSel);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hDevice <EFBFBD>Handle
* @return <EFBFBD><EFBFBD>ǰϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetCurrentSystemPrj(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>(s)
* @param hDevice <EFBFBD>Handle
* @param pnErrorCode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
*/
VZNLAPI double VzNL_GetSystemRuntime(VZNLHANDLE hDevice, int* pnErrorCode);
/// @}
#endif