Files
d330viewer/include/dkam_zhicamera_api.h
2026-01-14 18:07:26 +08:00

394 lines
24 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.
/********************************************************************************************
Copyright : XianZhisensorTechnologiesCo.,Ltd
File Name : zhicamera_api.cpp
Description: APIs accessed by users
Version :
Author : ss.chen
Data : 2020-4-16
History :
*********************************************************************************************/
#pragma once
#include "dkam_base_type.h"
#include <stdbool.h>
#ifdef __cplusplus
extern "C"
{
#endif
//using namespace std;
typedef struct CAMERA_OBJECT Camera_Object_C;
#ifdef _WIN32
#define DLLEXPORT_API extern __declspec(dllexport)
#define DLL_INT int __stdcall
#define DLL_CHAR_POINT char* __stdcall
#define DLL_BOOL bool __stdcall
#define DLL_UNSIGNED_LONG_LONG unsigned long long __stdcall
#define DLL_UNSIGNED_INT unsigned int __stdcall
#define DLL_VOID void __stdcall
#define DLL_CAMERA_OBJECT_POINT Camera_Object_C* __stdcall
#define DLL_DISCOVERYINFO DiscoveryInfo __stdcall
#define DLL_DOUBLE double __stdcall
#define DLL_FLOAT float __stdcall
#else
#define DLLEXPORT_API
#define DLL_INT int
#define DLL_CHAR_POINT char*
#define DLL_BOOL bool
#define DLL_UNSIGNED_LONG_LONG unsigned long long
#define DLL_UNSIGNED_INT unsigned int
#define DLL_VOID void
#define DLL_CAMERA_OBJECT_POINT Camera_Object_C*
#define DLL_DISCOVERYINFO DiscoveryInfo
#define DLL_DOUBLE double
#define DLL_FLOAT float
#endif
/*/////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
******************************************相机相关操作*****************************************
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////*/
//发现相机
DLLEXPORT_API DLL_INT DiscoverCamera();
//创建相机
DLLEXPORT_API DLL_CAMERA_OBJECT_POINT CreateCamera(int camera_index);
//销毁相机
DLLEXPORT_API DLL_VOID DestroyCamera(Camera_Object_C* camera_obj);
//相机排序(0:IP 1:series number)
DLLEXPORT_API DLL_INT CameraSort(int sort_mode);
//获取相机的信息
DLLEXPORT_API DLL_DISCOVERYINFO GetCameraInfo(Camera_Object_C* camera_obj);
//获取相机的CCP状态(data输出0为可连接)
DLLEXPORT_API DLL_INT GetCameraCCPStatus(Camera_Object_C* camera_obj, int *data);
//获取相机xml所有节点名称
DLLEXPORT_API DLL_VOID GetCameraXMLNodeNames(Camera_Object_C* camera_obj, char node_names[][255], int* len);
//获取节点最大值
DLLEXPORT_API DLL_INT GetNodeMaxValue(Camera_Object_C* camera_obj, const char* key);
//获取节点最小值
DLLEXPORT_API DLL_INT GetNodeMinValue(Camera_Object_C* camera_obj, const char* key);
//获取int节点增量
DLLEXPORT_API DLL_INT GetNodeIncValue(Camera_Object_C* camera_obj, const char* key);
//获取相机节点value(camera_ret:相机索引号 key:寄存器的名称)
DLLEXPORT_API DLL_INT GetRegisterAddr(Camera_Object_C* camera_obj, const char* key);
//读string类型的寄存器
DLLEXPORT_API DLL_INT ReadStringRegister(Camera_Object_C* camera_obj, const char* key, char* reg_str);
//写string类型的寄存器
DLLEXPORT_API DLL_INT WriteStringRegister(Camera_Object_C* camera_obj, const char* key, unsigned short datasize, char* reg_str);
//相机IP(camera_ret:相机索引号)
DLLEXPORT_API DLL_CHAR_POINT CameraIP(int camera_index);
//相机的序列号
DLLEXPORT_API DLL_CHAR_POINT CameraSeriesNumberByIndex(int camera_index);
//设置log日志的等级开关决定是否开启某一个等级的日志打印默认关闭(0:关闭 1:开启)
DLLEXPORT_API DLL_VOID SetLogLevel(int error, int debug, int warnning, int info);
//连接相机(camera_ret:相机索引号)
DLLEXPORT_API DLL_INT CameraConnect(Camera_Object_C* camera_obj);
//开启数据流通道 (camera_ret:相机索引号 channel_index :数据流通道索引)
DLLEXPORT_API DLL_INT StreamOn(Camera_Object_C* camera_obj, unsigned short channel_index);
//开始接受数据 (camera_ret:相机索引号)
DLLEXPORT_API DLL_INT AcquisitionStart(Camera_Object_C* camera_obj);
//清空缓存区
DLLEXPORT_API DLL_VOID FlushBuffer(Camera_Object_C* camera_obj, unsigned short channel_index);
//设置最大的缓冲区
DLLEXPORT_API DLL_INT SetMaxBufferLength(Camera_Object_C* camera_obj, unsigned short channel_index, unsigned int size);
//获取buffer缓冲区大小
DLLEXPORT_API DLL_INT GetMaxBufferLength(Camera_Object_C* camera_obj, unsigned short channel_index);
//设置重发包比例
DLLEXPORT_API DLL_INT SetPacketResendRatio(Camera_Object_C* camera_obj, unsigned short channel_index, double ratio);
//获取重发包比例
DLLEXPORT_API DLL_DOUBLE GetPacketResendRatio(Camera_Object_C* camera_obj, unsigned short channel_index);
//设置select的超时时间
DLLEXPORT_API DLL_INT SetSocketSelectTimeout(Camera_Object_C* camera_obj, unsigned short channel_index, unsigned int timeout);
//获取select的超时时间
DLLEXPORT_API DLL_INT GetSocketSelectTimeout(Camera_Object_C* camera_obj, unsigned short channel_index);
//设置重发包超时时间
DLLEXPORT_API DLL_INT SetPacketTimeout(Camera_Object_C* camera_obj, unsigned short channel_index, unsigned int timeout);
//获取重发包超时时间
DLLEXPORT_API DLL_INT GetPacketTimeout(Camera_Object_C* camera_obj, unsigned short channel_index);
//设置block超时时间
DLLEXPORT_API DLL_INT SetBlockTimeout(Camera_Object_C* camera_obj, unsigned short channel_index, unsigned int timeout);
//获取block超时时间
DLLEXPORT_API DLL_INT GetBlockTimeout(Camera_Object_C* camera_obj, unsigned short channel_index);
//获取帧方面的统计数据
DLLEXPORT_API DLL_VOID GetBlockStatistics(Camera_Object_C* camera_obj, unsigned short channel_index,
unsigned int *completed_buffers,
unsigned int *failures,
unsigned int *timeouts,
unsigned int *underruns,
unsigned int *aborteds,
unsigned int *missing_frames,
unsigned int *block_camera_wrong,
unsigned int *size_mismatch_errors);
//获取包方面的统计数据
DLLEXPORT_API DLL_VOID GetPacketStatistics(Camera_Object_C* camera_obj, unsigned short channel_index,
unsigned int *received_packets,
unsigned int *missing_packets,
unsigned int *error_packets,
unsigned int *ignored_packets,
unsigned int *resend_requests,
unsigned int *resent_packets,
unsigned int *duplicated_packets);
//获取接收花费时间方面的统计数据
DLLEXPORT_API DLL_VOID GetRecieveTimeStatistics(Camera_Object_C* camera_obj, unsigned short channel_index, StatisticsData *o_statistics_data);
//获取网速的统计数据
DLLEXPORT_API DLL_INT GetNetSpeed(Camera_Object_C* camera_obj, unsigned short channel_index);
//获取帧率的统计数据
DLLEXPORT_API DLL_FLOAT GetBlockRate(Camera_Object_C* camera_obj, unsigned short channel_index);
//获取数据(camera_ret:相机索引号 channel_index :数据流通道索引 raw_data:接收数据的结构体 )
/*C++*/
//阻塞式抓取数据
DLLEXPORT_API DLL_INT Capture(Camera_Object_C* camera_obj, unsigned short channel_index, PhotoInfo *raw_data);
//try
DLLEXPORT_API DLL_INT TryCapture(Camera_Object_C* camera_obj, unsigned short channel_index, PhotoInfo *raw_data);
//超时抓取数据
DLLEXPORT_API DLL_INT TimeoutCapture(Camera_Object_C* camera_obj, unsigned short channel_index, PhotoInfo *raw_data, long long timeout);
//将char数据转为float类型
DLLEXPORT_API DLL_VOID Convert3DPointFromCharToFloat(Camera_Object_C* camera_obj, PhotoInfo *raw_data, float* output);
//将Rawdata数据转换成RGB888的图像数据
DLLEXPORT_API DLL_INT RawdataToRgb888(Camera_Object_C* camera_obj, PhotoInfo *rgb_data);
//获取点云的X平面数据
DLLEXPORT_API DLL_INT GetCloudPlaneX(Camera_Object_C* camera_obj, PhotoInfo *raw_data, short *imagedata);
//获取点云的Y平面数据
DLLEXPORT_API DLL_INT GetCloudPlaneY(Camera_Object_C* camera_obj, PhotoInfo *raw_data, short *imagedata);
//获取点云的Z平面数据
DLLEXPORT_API DLL_INT GetCloudPlaneZ(Camera_Object_C* camera_obj, PhotoInfo *raw_data, short *imagedata);
//保存点云某个平面数据
DLLEXPORT_API DLL_INT SaveCloudPlane(Camera_Object_C* camera_obj, PhotoInfo *raw_data, short *imagedata, char* path_name);
/*C++*/
//停止接受数据(camera_ret:相机索引号)
DLLEXPORT_API DLL_INT AcquisitionStop(Camera_Object_C* camera_obj);
//关闭数据流通道 (camera_ret:相机索引号 channel_index :数据流通道索引)
DLLEXPORT_API DLL_INT StreamOff(Camera_Object_C* camera_obj, unsigned short channel_index);
//相机断开连接 (camera_ret:相机索引号)
DLLEXPORT_API DLL_INT CameraDisconnect(Camera_Object_C* camera_obj);
/*/////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
****************************************GVCP相关操作*******************************************
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////*/
//获取相机内参
DLLEXPORT_API DLL_INT GetCamInternelParameter(Camera_Object_C* camera_obj, int camera_cnt, float *Kc, float *K);
//获取相机外参
DLLEXPORT_API DLL_INT GetCamExternelParameter(Camera_Object_C* camera_obj, int camera_cnt, float *R, float *T);
//设置相机ip (camera_ret:相机索引号 ip mask gateway)
DLLEXPORT_API DLL_INT ForceIP(Camera_Object_C* camera_obj, char* ip, char* mask, char* gateway);
//判断相机的IP和PC的IP是否在同一网段
DLLEXPORT_API DLL_BOOL WhetherIsSameSegment(Camera_Object_C* camera_obj);
//设置相机种类 (0红外1RGB)
DLLEXPORT_API DLL_INT SetCameraType(Camera_Object_C* camera_obj, int camera_cnt);
//获取相机种类 (0红外1RGB)
DLLEXPORT_API DLL_INT GetCameraType(Camera_Object_C* camera_obj);
//获取相机的宽
DLLEXPORT_API DLL_INT GetCameraWidth(Camera_Object_C* camera_obj, int* width, int camera_cnt);
//设置相机的宽
DLLEXPORT_API DLL_INT SetCameraWidth(Camera_Object_C* camera_obj, int width, int camera_cnt);
//获取相机的高
DLLEXPORT_API DLL_INT GetCameraHeight(Camera_Object_C* camera_obj, int* height, int camera_cnt);
//设置相机的高
DLLEXPORT_API DLL_INT SetCameraHeight(Camera_Object_C* camera_obj, int height, int camera_cnt);
//写寄存器 (camera_ret:相机索引号 register_addr:寄存器的地址 data:接收寄存器的值)
DLLEXPORT_API DLL_INT WriteRegister(Camera_Object_C* camera_obj, unsigned int register_addr, int data);
//读寄存器 (camera_ret:相机索引号 register_addr:寄存器的地址 data:接收寄存器的值)
DLLEXPORT_API DLL_INT ReadRegister(Camera_Object_C* camera_obj, unsigned int register_addr, int* data);
//设置超时时间
DLLEXPORT_API DLL_INT SetHeartBeatTimeout(Camera_Object_C* camera_obj, int value);
//获取超时时间
DLLEXPORT_API DLL_INT GetHeartBeatTimeout(Camera_Object_C* camera_obj);
//设置相机曝光模式(camera_index:相机索引号 status:1手动曝光0自动曝光 camera_cnt:相机的摄像头0红外摄像头 1:RGB摄像头)
DLLEXPORT_API DLL_INT SetAutoExposure(Camera_Object_C* camera_obj, int status, int camera_cnt);
//获取相机曝光模式 (camera_index:相机索引号 camera_cnt:相机的摄像头0红外摄像头 1:RGB摄像头)
DLLEXPORT_API DLL_INT GetAutoExposure(Camera_Object_C* camera_obj, int camera_cnt);
//设置RGB摄像头自动曝光增益的级别(>=1 仅支持RGB摄像头) (camera_index:相机索引号 camera_cnt:相机的摄像头0红外摄像头 1:RGB摄像头 level:曝光增益等级)
DLLEXPORT_API DLL_INT SetCamExposureGainLevel(Camera_Object_C* camera_obj, int camera_cnt, int level);
//获取RGB摄像头自动曝光增益的级别仅支持RGB摄像头(camera_index:相机索引号 camera_cnt:相机的摄像头0红外摄像头 1:RGB摄像头)
DLLEXPORT_API DLL_INT GetCamExposureGainLevel(Camera_Object_C* camera_obj, int camera_cnt);
//设置相机曝光类型int status >0 多重曝光 不能是0
DLLEXPORT_API DLL_INT SetMutipleExposure(Camera_Object_C* camera_obj, int status);
//获取相机曝光类型
DLLEXPORT_API DLL_INT GetMutipleExposure(Camera_Object_C* camera_obj);
//设置曝光时间utimes:曝光时间: 红外镜头范围1000 - 100000um, RGB镜头范围1000 - 56000um, 默认16600, camera_cnt:0是红外 1是RGB
DLLEXPORT_API DLL_INT SetExposureTime(Camera_Object_C* camera_obj, int utime, int camera_cnt);
//获取相机曝光时间 camera_cnt:0是红外 1是RGB
DLLEXPORT_API DLL_INT GetExposureTime(Camera_Object_C* camera_obj, int camera_cnt);
//设置相机多曝光模式, 0:等差1等比
DLLEXPORT_API DLL_INT SetMultiExpoMode(Camera_Object_C* camera_obj, int mode);
//获取相机多曝光模式
DLLEXPORT_API DLL_INT GetMultiExpoMode(Camera_Object_C* camera_obj);
//设置多曝光起点value 范围0-100000
DLLEXPORT_API DLL_INT SetMultiExpoMin(Camera_Object_C* camera_obj, int value);
//获取多曝光起点
DLLEXPORT_API DLL_INT GetMultiExpoMin(Camera_Object_C* camera_obj);
//设置多曝光终点value 范围0-100000
DLLEXPORT_API DLL_INT SetMultiExpoMax(Camera_Object_C* camera_obj, int value);
//获取多曝光终点
DLLEXPORT_API DLL_INT GetMultiExpoMax(Camera_Object_C* camera_obj);
//设置增益 model: 1 模拟增益量 2 数据增益量 value: 增益值 times:缺省参数缺省为1 第二次增益times = 2
DLLEXPORT_API DLL_INT SetGain(Camera_Object_C* camera_obj, int mode, int value, int camera_cnt);
//获取相机增益值 mode: 1 模拟增益量 2 数据增益量
DLLEXPORT_API DLL_INT GetGain(Camera_Object_C* camera_obj, int mode, int camera_cnt);
//设置相机触发模式mode: 0 连拍模式 1 触发模式
DLLEXPORT_API DLL_INT SetTriggerMode(Camera_Object_C* camera_obj, int mode);
//设置相机触发模式信号来源: 0 软触发 1 硬触发
DLLEXPORT_API DLL_INT SetTriggerSource(Camera_Object_C* camera_obj, int sourcetype);
//设置相机RGB触发模式mode: 0 连拍模式 1 触发模式
DLLEXPORT_API DLL_INT SetRGBTriggerMode(Camera_Object_C* camera_obj, int mode);
//设置相机触发模式下的触发帧数
DLLEXPORT_API DLL_INT SetTriggerCount(Camera_Object_C* camera_obj);
//获取相机触发模式下的触发帧数
DLLEXPORT_API DLL_INT GetTriggerCount(Camera_Object_C* camera_obj);
//设置相机RGB触发模式下的触发帧数
DLLEXPORT_API DLL_INT SetRGBTriggerCount(Camera_Object_C* camera_obj);
//设置重发请求: 0 关闭, 1 打开(默认开启)
DLLEXPORT_API DLL_VOID SetResendRequest(Camera_Object_C* camera_obj, int channel_index, int resend_flag);
//获取重发请求: 0 关闭, 1 打开(默认开启)
DLLEXPORT_API DLL_INT GetResendRequest(Camera_Object_C* camera_obj, int channel_index);
//设置红外摄像头ROI
DLLEXPORT_API DLL_INT SetRoi(Camera_Object_C* camera_obj, int channel_index, int size_x, int size_y, int offset_x, int offset_y);
//设置激光模式: 1 line 0 plane(默认plane)
DLLEXPORT_API DLL_INT SetLaserMode(Camera_Object_C* camera_obj, int mode);
//获取激光模式
DLLEXPORT_API DLL_INT GetLaserMode(Camera_Object_C* camera_obj);
//设置点云后处理模型
DLLEXPORT_API DLL_INT SetPointCloudPostProcessMode(Camera_Object_C* camera_obj, int mode);
//获取点云后处理模型
DLLEXPORT_API DLL_INT GetPointCloudPostProcessMode(Camera_Object_C* camera_obj);
//设置点云增益值取值范围0-30只有当点云自动增益等级为0时才可以设置该值
DLLEXPORT_API DLL_INT SetPointCloudThresholdValue(Camera_Object_C* camera_obj, int value);
//获取点云增益值
DLLEXPORT_API DLL_INT GetPointCloudThresholdValue(Camera_Object_C* camera_obj, int* value);
//设置点云自动增益等级: 0-20
DLLEXPORT_API DLL_INT SetPointCloudThresholdLevel(Camera_Object_C* camera_obj, int level);
//获取点云自动增益等级
DLLEXPORT_API DLL_INT GetPointCloudThresholdLevel(Camera_Object_C* camera_obj, int* level);
//获取xml buffer size
DLLEXPORT_API DLL_INT GetXMLBufferSize(Camera_Object_C* camera_obj, int* xml_size);
//获取xml buffer
DLLEXPORT_API DLL_INT GetXMLBuffer(Camera_Object_C* camera_obj, char* buffer);
//保存用户配置文件
DLLEXPORT_API DLL_INT SaveUserConfig(Camera_Object_C* camera_obj, char* fliename);
//加载用户配置文件
DLLEXPORT_API DLL_INT LoadUserConfig(Camera_Object_C* camera_obj,char* fliename);
//获取节点类型
DLLEXPORT_API DLL_INT GetNodeType(Camera_Object_C* camera_obj, const char* key);
//获取节点访问模式
DLLEXPORT_API DLL_INT GetNodeAccessMode(Camera_Object_C* camera_obj, const char* key);
//设置Int类型节点值
DLLEXPORT_API DLL_INT SetIntNodeValue(Camera_Object_C* camera_obj, const char* key, unsigned int value);
//设置Bool类型节点值
DLLEXPORT_API DLL_INT SetBoolNodeValue(Camera_Object_C* camera_obj, const char* key, bool value);
//设置Command类型节点值
DLLEXPORT_API DLL_INT SetCommandNodeValue(Camera_Object_C* camera_obj, const char* key);
//设置Float类型节点值
DLLEXPORT_API DLL_INT SetFloatNodeValue(Camera_Object_C* camera_obj, const char* key, float value);
//设置String类型节点值
DLLEXPORT_API DLL_INT SetStringNodeValue(Camera_Object_C* camera_obj, const char* key, char* value);
//设置Enumeration类型节点值
DLLEXPORT_API DLL_INT SetEnumNodeValue(Camera_Object_C* camera_obj, const char* key, int value);
//获取Int类型节点值
DLLEXPORT_API DLL_INT GetIntNodeValue(Camera_Object_C* camera_obj, const char* key, int* value);
//获取Bool类型节点值
DLLEXPORT_API DLL_INT GetBoolNodeValue(Camera_Object_C* camera_obj, const char* key, int* value);
//获取Command类型节点值
DLLEXPORT_API DLL_INT GetCommandNodeValue(Camera_Object_C* camera_obj, const char* key, char* value);
//获取Float类型节点值
DLLEXPORT_API DLL_INT GetFloatNodeValue(Camera_Object_C* camera_obj, const char* key, float* value);
//获取String类型节点值
DLLEXPORT_API DLL_INT GetStringNodeValue(Camera_Object_C* camera_obj, const char* key, char* value);
//获取Enumeration类型节点值
DLLEXPORT_API DLL_INT GetEnumNodeValue(Camera_Object_C* camera_obj, const char* key, int* value);
//开启或关闭时间戳同步status: 0 关闭时间戳同步 1 开启时间戳同步
DLLEXPORT_API DLL_INT SetTimestamp(Camera_Object_C* camera_obj, int status);
//获取时间戳是否开启
DLLEXPORT_API DLL_INT GetTimestamp(Camera_Object_C* camera_obj);
//获取PTPD状态码
DLLEXPORT_API DLL_INT GetTimestampStatus(Camera_Object_C* camera_obj);
//控制锁存时间戳
DLLEXPORT_API DLL_INT SetTimestampControlLatch(Camera_Object_C* camera_obj);
//获取时间戳
DLLEXPORT_API DLL_UNSIGNED_LONG_LONG GetTimestampValue(Camera_Object_C* camera_obj);
//获取时间戳频率
DLLEXPORT_API DLL_UNSIGNED_LONG_LONG GetTimestampTickFrequency(Camera_Object_C* camera_obj);
//固件升级
DLLEXPORT_API DLL_INT FirmwareUpgrade(Camera_Object_C* camera_obj, const char *localfilename);
//内核升级
DLLEXPORT_API DLL_INT KernelUpgrade(Camera_Object_C* camera_obj, const char* localfilename);
//获取下位置日志
DLLEXPORT_API DLL_INT DownloadCameraLog(Camera_Object_C* camera_obj, const char* filepath, const char* filename);
//获取下位机日志目录
DLLEXPORT_API DLL_INT CameraLogList(Camera_Object_C* camera_obj, char filename_s[][255], int* len);
//图片裁剪
DLLEXPORT_API DLL_INT ImageRoiCrop(Camera_Object_C* camera_obj, PhotoInfo* source_data, RoiPoint roi, PhotoInfo* target_data);
//获取相机盖状态,此接口只对特定型号相机适用, 0相机盖关闭1相机盖打开 其他:查看错误码
DLLEXPORT_API DLL_INT GetCameraCoverStatus(Camera_Object_C* camera_obj, int* status);
//相机盖状态,此接口只对特定型号相机适用
DLLEXPORT_API DLL_INT TurnOnCameraCover(Camera_Object_C* camera_obj);
//关闭相机盖,此接口只对特定型号相机适用
DLLEXPORT_API DLL_INT TurnOffCameraCover(Camera_Object_C* camera_obj);
// 设置激光器正常/关闭接口1关闭0正常默认是正常状态
DLLEXPORT_API DLL_INT SetLaserStatus(Camera_Object_C* camera_obj, int status);
// 获取激光器正常/关闭接口1关闭0正常返回值0成功其他查看错误码
DLLEXPORT_API DLL_INT GetLaserStatus(Camera_Object_C* camera_obj, int* status);
/*/////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
*******************************************数据保存********************************************
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////*/
//保存xml到本地
DLLEXPORT_API DLL_INT SaveXmlToLocal(Camera_Object_C* camera_obj, char* pathname);
/*C++*/
//保存点云 to pcd 格式
DLLEXPORT_API DLL_INT SavePointCloudToPcd(Camera_Object_C* camera_obj, PhotoInfo *raw_data, char* path_name);
//保存点云 to txt 格式
DLLEXPORT_API DLL_INT SavePointCloudToTxt(Camera_Object_C* camera_obj, PhotoInfo *raw_data, char* path_name);
//保存点云 to ply 格式
DLLEXPORT_API DLL_INT SavePointCloudToPly(Camera_Object_C* camera_obj, PhotoInfo *raw_data, char* path_name);
//点云滤波(基于空间密度的点云去噪)
DLLEXPORT_API DLL_VOID FilterPointCloud(Camera_Object_C* camera_obj, PhotoInfo *raw_data, double level);
//空间滤波(基于空间网格的点云去噪) 20220225: 弃用, FilterPointCloud为该API的升级版
DLLEXPORT_API DLL_INT SpatialFilterPointcloud(Camera_Object_C* camera_obj, PhotoInfo *raw_data, int Area_PointCloudCount);
//保存bmp图
DLLEXPORT_API DLL_INT SaveToBMP(Camera_Object_C* camera_obj, PhotoInfo *data, char* path_name);
//保存点云深度图 to png
DLLEXPORT_API DLL_INT SaveDepthToPng(Camera_Object_C* camera_obj, PhotoInfo *raw_data, char* path_name);
//点云融合
DLLEXPORT_API DLL_INT FusionImageTo3D(Camera_Object_C* camera_obj, PhotoInfo *image_data, PhotoInfo *raw_data, float * image_cloud);
//根据RGB重排点云
DLLEXPORT_API DLL_INT Fusion3DToRGB(Camera_Object_C* camera_obj, PhotoInfo *rgb_data, PhotoInfo *raw_data, PhotoInfo *xyz);
//根据RGB重排点云
DLLEXPORT_API DLL_INT Fusion3DToRGBWithOutDistortion(Camera_Object_C* camera_obj, PhotoInfo* rgb_data, PhotoInfo* raw_data, PhotoInfo* xyz);
//图像膨胀
DLLEXPORT_API DLL_VOID PixelSwell(Camera_Object_C* camera_obj, int *roi_output, PhotoInfo *target_data);
//图像腐蚀
DLLEXPORT_API DLL_VOID PixelCorrosion(Camera_Object_C* camera_obj, int *roi_output, PhotoInfo *target_data);
//ROI映射区域坐标
DLLEXPORT_API DLL_VOID ROIMappingCoordinate(Camera_Object_C* camera_obj, int *roi_output, PhotoInfo *target_data, RoiPoint *point_output);
//ROI检索映射
DLLEXPORT_API DLL_VOID ROIPixelMapping(Camera_Object_C* camera_obj, PhotoInfo *point_data, PhotoInfo *source_data, PhotoInfo *target_data, RoiPoint *roi_input, int *ROI_output);
//保存点云 with image to pcd
DLLEXPORT_API DLL_INT SavePointCloudWithImageToTxt(Camera_Object_C* camera_obj, PhotoInfo *raw_data, float * rgb_cloud, char *path_name);
//保存与图片融合后的点云Ply保留无效点
DLLEXPORT_API DLL_INT SavePointCloudWithImageToPly(Camera_Object_C* camera_obj, PhotoInfo *raw_data, float * image_cloud, char *path_name);
//保存与图片融合后的点云Pcd
DLLEXPORT_API DLL_INT SavePointCloudWithImageToPcd(Camera_Object_C* camera_obj, PhotoInfo *raw_data, float * image_cloud, char *path_name);
/*C++*/
/*/////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
*******************************************获取版本号******************************************
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////*/
//相机固件的版本号
DLLEXPORT_API DLL_CHAR_POINT CameraVerions(Camera_Object_C* camera_obj);
//SDK的版本号
DLLEXPORT_API DLL_CHAR_POINT SDKVersion(Camera_Object_C* camera_obj);
DLLEXPORT_API DLL_CHAR_POINT sdkversion();
//相机的序列号
DLLEXPORT_API DLL_CHAR_POINT CameraSeriesNumber(Camera_Object_C* camera_obj);
#ifdef __cplusplus
}
#endif