图漾相机——C#语言属性设置

文章目录

  • 前言
  • 1.示例程序说明
  • 2.SDK API功能介绍
    • 2.1 ListDevice 枚举设备
    • 2.2 Open 打开相机
    • 2.3 OpenDeviceByIP 通过IP打开设备
    • 2.4 Close 关闭设备
    • 2.5 DeviceStreamEnable 取流使能
    • 2.6 DeviceStreamFormatDump 取流分辨率
    • 2.7 DeviceStreamFormatConfig 取流分辨率配置
    • 2.8 DeviceReadCurrentEnumData 取图当前分辨率
    • 2.9 DeviceReadCalibData 读取标定参数
    • 2.10 DeviceStreamOn 打开取流
    • 2.11 DeviceStreamOff 关闭取流
    • 2.12 DeviceStreamRead 获取帧数据
    • 2.13 DeviceStreamDepthRender 解析和渲染深度图图像
    • 2.14 DeviceStreamImageDecode 解析RGB图像
    • 2.15 DeviceStreamIRRender 解析IR图像
    • 2.16 DeviceControlLaserPowerAutoControlEnable 使能IR激光器
    • 2.17 DeviceControlLaserPowerConfig 设置激光亮度
    • 2.18 DeviceColorStreamIspEnable 打开RGB的ISP
    • 2.19 DeviceStreamMapDepthImageToColorCoordinate 深度图对齐到彩色图
    • 2.20 DeviceStreamMapRGBImageToDepthCoordinate 彩色图对齐到深度图
    • 2.21 DeviceStreamDoUndistortion 做畸变校正
    • 2.22 DeviceControlTriggerModeEnable 设置相机工作模式
    • 2.23 DeviceControlTriggerModeSendTriggerSignal 发送软触发指令
    • 2.24DeviceStreamMapDepthImageToPoint3D 深度图转点云
    • 2.25 IPv4StringToInt 将字符串转换成整型
      • 2.25.1 ip设置
      • 2.25.2 netmask设置
      • 2.25.3 gateway设置
    • 2.26 DevParamFromInt 设置Int变量
    • 2.27 DevParamFromEnum 设置枚举变量
    • 2.28 DevParamFromBool 设置Bool变量
    • 2.29 DevParamFromFloat 设置Float变量
    • 2.30 DeviceSetParameter 设置相机参数
    • 2.31 DeviceGetParameter 获取相机参数
      • 2.31.1 Int型 获取Int类型
      • 2.31.2 Enum型 获取枚举类型
      • 2.31.3 Bool型 获取Bool参数
      • 2.31.4 Float型 获取Float参数
      • 2.31.5 Array型 获取BYTEARRAY参数
      • 2.31.6 Struct(roi)型 获取Struct类型
    • 2.32 get_netinfo 获取网络相机信息接口
    • 2.33 DeviceLoadDefaultParameters 加载相机配置文件
    • 2.34 DeviceWriteDefaultParametersFromJSFile 将参数写入到相机
    • 2.35 DeviceClearDefaultParameters 清除相机参数
    • 2.36 DeviceHasStream 判断相机是否在取流
    • 2.37 DeviceReadRectifiedRotationData
    • 2.38 DeviceReadRectifiedIntrData
  • 3.组件属性设置
  • 3.1 Device组件
      • 3.1.1 TY_INT_PERSISTENT_IP 静态 IP 地址
      • 3.1.2 TY_INT_PERSISTENT_SUBMASK 静态 IP 子网掩码
      • 3.1.3 TY_INT_PERSISTENT_GATEWAY 静态 IP 网关
      • 3.1.4 TY_INT_PACKET_DELAY 数据传输延迟时间
      • 3.1.5 TY_INT_PACKET_SIZE 数据传输包大小
      • 3.1.6 TY_BOOL_GVSP_RESEND 网络重传
      • 3.1.7 TY_INT_ACCEPTABLE_PERCENT 接收包比例
      • 3.1.8 TY_BOOL_KEEP_ALIVE_ONOFF 状态保持开关
      • 3.1.9 TY_INT_KEEP_ALIVE_TIME 状态保持时间
      • 3.1.10 TY_ENUM_TRIGGER_POL 触发沿设置
      • 3.1.11 TY_INT_FRAME_PER_TRIGGER 触发出图数
      • 3.1.12 TY_INT_CAPTURE_TIME_US 采集时间
      • 3.1.13 TY_INT_NTP_SERVER_IP ntp服务器ip
      • 3.1.14 TY_BOOL_CMOS_SYNC 图像同步
      • 3.1.15 TY_ENUM_STREAM_ASYNC 数据流同步
      • 3.1.16 TY_ENUM_TIME_SYNC_TYPE 相机对时功能
      • 3.1.17 TY_BOOL_TIME_SYNC_READY 判断对时是否成功
      • 3.1.18 TY_ENUM_CONFIG_MODE 出图模式
    • 3.2 Depth 组件
      • 3.2.1 TY_ENUM_IMAGE_MODE 深度图图像格式
      • 3.2.2 TY_FLOAT_SCALE_UNIT 设置深度图中像素值的单位
    • 3.3 Color组件
      • 3.3.1 TY_INT_EXPOSURE_TIME 设置RGB曝光时间
      • 3.3.2 TY_INT_ANALOG_GAIN 设置模拟增益
      • 3.3.3 TY_INT_R_GAIN 设置R通道增益
      • 3.3.4 TY_INT_G_GAIN 设置G通道增益
      • 3.3.5 TY_INT_B_GAIN 设置B通道增益
      • 3.3.6 TY_BOOL_AUTO_GAIN 设置RGB的自动增益
      • 3.3.7 TY_BOOL_AUTO_AWB 设置RGB相机的白平衡
      • 3.3.8 TY_STRUCT_AEC_ROI 设置RGB的区域曝光
      • 3.3.9 TY_BOOL_AUTO_EXPOSURE 设置RGB的自动曝光
      • 3.3.10 TY_INT_AE_TARGET_Y 自动曝光目标亮度
    • 3.4 IR和光源组件
      • 3.4.1 TY_INT_GAIN 设置IR增益
      • 3.4.2 TY_FLOAT_EXPOSURE_TIME_US 曝光时间
      • 3.4.3 TY_BOOL_LASER_AUTO_CTRL 开关激光器
      • 3.4.4 TY_INT_LASER_POWER 调节激光器亮度
      • 3.4.5 TY_BOOL_HDR 高动态范围
      • 3.4.6 TY_BYTEARRAY_HDR_PARAMETER 设置HDR参数
      • 3.4.7 TY_BOOL_IR_FLASHLIGHT 设置泛光使能
      • 3.4.8 TY_INT_IR_FLASHLIGHT_INTENSITY 设置泛光亮度值
    • 3.5 TOF相机Depth组件
      • 3.5.1 TY_ENUM_DEPTH_QUALITY 深度质量
      • 3.5.2 TY_INT_TOF_CHANNEL 调制频道
      • 3.5.3 TY_INT_TOF_MODULATION_THRESHOLD 激光调制光强
      • 3.5.4 TY_INT_TOF_ANTI_SUNLIGHT_INDEX 抗阳光指数
      • 3.5.5 TY_INT_TOF_JITTER_THRESHOLD 抖动过滤
      • 3.5.6 TY_INT_TOF_HDR_RATIO 高动态范围比
      • 3.5.7 TY_BOOL_TOF_ANTI_INTERFERENCE 抗多机干扰
      • 3.5.8 TY_INT_MAX_SPECKLE_SIZE 聚类斑点面积
      • 3.5.9 TY_INT_MAX_SPECKLE_DIFF 聚类阈值
    • 3.6 PS/FM855等相机SGBM特性
      • 3.6.1 TY_INT_SGBM_DISPARITY_NUM 设置视差搜索范围
      • 3.6.2 TY_INT_SGBM_DISPARITY_OFFSET 设置开始搜索的视差值。
      • 3.6.3 TY_INT_SGBM_MATCH_WIN_HEIGHT 设置视差匹配窗口的高。
      • 3.6.4 TY_INT_SGBM_MATCH_WIN_WIDTH 设置视差匹配窗口的宽。
      • 3.6.5 TY_INT_SGBM_IMAGE_NUM 设置用于深度计算的 IR 图像数量
      • 3.6.6 TY_INT_SGBM_SEMI_PARAM_P1 设置相邻像素 (+/-1) 约束惩罚参数 P1。
      • 3.6.7 TY_INT_SGBM_SEMI_PARAM_P1_SCALE 设置相邻像素 (+/-1) 约束惩罚参数 P1_scale
      • 3.6.8 TY_INT_SGBM_SEMI_PARAM_P2 设置周围像素约束惩罚参数 P2
      • 3.6.9 TY_BOOL_SGBM_HFILTER_HALF_WIN 搜索滤波开关
      • 3.6.10 TY_INT_SGBM_UNIQUE_FACTOR 最优匹配点与次优匹配点的百分比
      • 3.6.11 TY_INT_SGBM_UNIQUE_ABSDIFF 最优匹配点与次优匹配点差值的绝对值
      • 3.6.12 TY_BOOL_SGBM_LRC 左右一致性检查开关。
      • 3.6.13 TY_INT_SGBM_LRC_DIFF
      • 3.6.14 TY_BOOL_SGBM_MEDFILTER 中值滤波开关
      • 3.6.15 TY_INT_SGBM_MEDFILTER_THRESH 中值滤波阈值
      • 3.6.16 TY_INT_SGBM_TEXTURE_THRESH 纹理滤波阈值
      • 3.6.17 TY_INT_SGBM_TEXTURE_OFFSET 纹理滤波差值
    • 3.7 带泛光相机RGB属性
      • 3.7.1 TY_BOOL_RGB_FLASHLIGHT 设置RGB泛光使能
      • 3.7.2 TY_INT_RGB_FLASHLIGHT_INTENSITY 设置RGB泛光数值
    • 3.8 其他新增属性
      • 3.8.1 读取有哪些温度传感器
      • 3.8.2 读取温度值
      • 3.8.3 TYSetLogLevel
  • 4.常见问题FAQ

前言

请参考图漾官网的在线文档:
https://doc.percipio.xyz/cam/latest/getstarted/sdk-csharp-compile.html#windows-csharp-label
而如果不想配置环境,请参考预编译版本例子,下载地址:
https://doc.percipio.xyz/cam/latest/getstarted/compile.html

1.示例程序说明

示例程序存放在开发包根目录 csharp 文件夹内:
1.fetch_frame.cs:该示例在自由采集模式下采集深度图和彩色图。
2.fetch_IR.cs:该示例在自由采集模式下采集 IR 图。
3.fetch_isp.cs:该示例在软件层面对于彩色图像的 ISP 后处理,可将存在偏色的 RAW BAYER 图像处理成正常色彩空间的彩色图。
4.fetch_point3d.cs:该示例用于采集 3d 点云(未作显示),Log 信息显示点云个数和中心点云坐标(X,Y,Z)。
5.fetch_registration.cs:该示例用于采集 RGB-D 对齐图像。
6.fetch_trigger.cs:该示例用于设置相机工作在软触发模式下采集深度图。
7.offline_reconnection.cs :该例程⽤于处理因环境不稳定等因素造成的数据连接异常,并实现相机离线重连。
8.parameter_settings.cs:该例程⽤于设置不同数据类型的参数。例程中展⽰了如何关闭 RGB AEC(布尔型参数)、设置曝光时间(整型参数),以及设置图像分辨率和格式(枚举型参数)。

pcammls.dll :动态链接库。
pcammls.exp:中间⽂件。
pcammls.lib :依赖库。
pcammls_cs.dll :动态链接库。
注:前四个文件,均在编译后的camport _multi language/csharp_build_x64/Bin/Release 目录下。
tycam.dll:动态链接库。

如果不想编译,可下载预编译例程,链接如下:
https://gitee.com/percipioxyz/camport_multi_language_Release
在这里插入图片描述

2.SDK API功能介绍

本节主要介绍Csharp SDK中封装的一些接口。

2.1 ListDevice 枚举设备

该接口用于枚举与PC连接的所有相机。
示例如下

DeviceInfoVector dev_list= cl.ListDevice();

2.2 Open 打开相机

该接口用于打开指定SN号的相机。
示例如下

System.IntPtr handle =cl.Open(207000145055);

2.3 OpenDeviceByIP 通过IP打开设备

该接口用于打开指定p的相机。
示例如下:

System.IntPtr handle =cl.OpenDeviceByIP("192.168.6.85");

2.4 Close 关闭设备

该接口用于关闭相机
示例如下

cl.Close(handle);

2.5 DeviceStreamEnable 取流使能

该接口用于使能数据流,如需使能Color和Depth数据流。
示例如下:

cl.DeviceStreamEnable(handle, PERCIPIO_STREAM_COLOR | PERCIPIO_STREAM_DEPTH);

2.6 DeviceStreamFormatDump 取流分辨率

该接口用于列举数据流的分辨率格式。
示例如下

EnumEntryVector color_fmt_list = cl.DeviceStreamFormatDump(handle, PERCIPIO_STREAM_COLOR);if(color_fmt_list.Count() != 0) { Console.WriteLine(string.Format("color image format list:"));for (int i = 0; i < color_fmt_list.Count(); i++){TY_ENUM_ENTRY fmt = color_fmt_list[i];Console.WriteLine(string.Format("\t{0} -size[{1}x{2}]\t-\t desc:{3}", i, cl.Width(fmt), cl.Height(fmt), fmt.getDesc()));}}

2.7 DeviceStreamFormatConfig 取流分辨率配置

该接口用于配置数据流的分辨率,可与DeviceStreamFormatDump联合使用。
示例如下

cl.DeviceStreamFormatConfig(handle, PERCIPIO_STREAM_COLOR, color_fmt_list[0]);

表示配置列表中的第一个分辨率。

2.8 DeviceReadCurrentEnumData 取图当前分辨率

该接口用于读取当前数据流所用的分辨率
示例如下

TY_ENUM_ENTRY color_enum_desc = new TY_ENUM_ENTRY();
cl.DeviceReadCurrentEnumData(handle, PERCIPIO_STREAM_COLOR, color_enum_desc);
Console.WriteLine($"current color image mode   {color_enum_desc.getDesc()}");  

2.9 DeviceReadCalibData 读取标定参数

该接口用于读取数据流的标定参数。
示例如下:

PercipioCalibData color_calib_data   = cl.DeviceReadCalibData(handle, PERCIPIO_STREAM_COLOR);
int color_calib_width  = color_calib_data.Width();
int color_calib_height = color_calib_data.Height();
CalibDataVector color_calib_intr   = color_calib_data.Intrinsic();
CalibDataVector color_calib_extr   = color_calib_data.Extrinsic();
CalibDataVector color_calib_dis    = color_calib_data.Distortion();

2.10 DeviceStreamOn 打开取流

开启数据流,类似于C++中TYStartCapture接口。
示例如下:

cl.DeviceStreamOn(handle);

2.11 DeviceStreamOff 关闭取流

关闭数据流,类似于C++中TYStopCapture接口。
示例如下:

cl.DeviceStreamOff(handle) ;

2.12 DeviceStreamRead 获取帧数据

读取相机的传送的数据,类似于C++中TYFetchFrame接口。
示例如下:

FrameVector frames = cl.DeviceStreamRead(handle, 5000); 

2.13 DeviceStreamDepthRender 解析和渲染深度图图像

该接口用于解析和渲染深度图像。
示例如下:

image_data depth = new image_data();
cl.DeviceStreamDepthRender(frames[i], depth);
IntPtr pt = depth.buffer.getCPtr();
Bitmap bmp_depth = new Bitmap(depth.width, depth.height, depth.width * 3, PixelFormat.Format24bppRgb, pt);
pictureBox1.Image = (Image)(new Bitmap(bmp_depth, new Size(640, 480))).Clone();

2.14 DeviceStreamImageDecode 解析RGB图像

该接口用于解析RGB图像。
示例如下:

image_data bgr = new image_data();
cl.DeviceStreamImageDecode(frames[i], bgr);
IntPtr pt = bgr.buffer.getCPtr();
Bitmap bmp_color = new Bitmap(bgr.width, bgr.height, bgr.width * 3, PixelFormat.Format24bppRgb, pt);
pictureBox2.Image = (Image)(new Bitmap(bmp_color, new Size(640, 480))).Clone();

2.15 DeviceStreamIRRender 解析IR图像

该接口用于解析ir图像。
示例如下:

image_data rightIR = new image_data();
cl.DeviceStreamIRRender(frames[i], rightIR);
IntPtr pt = rightIR.buffer.getCPtr();
Bitmap rightIR_BMP = new Bitmap(rightIR.width, rightIR.height, 3*rightIR.width, PixelFormat.Format24bppRgb, pt);
pictureBox2.Image = (Image)(new Bitmap(rightIR_BMP, new Size(640, 480))).Clone();

2.16 DeviceControlLaserPowerAutoControlEnable 使能IR激光器

该接口用于使能/失能 **TY_BOOL_LASER_AUTO_CTRL**属性,用于需要分析ir散斑图时,点亮激光器。
示例如下:

cl.DeviceControlLaserPowerAutoControlEnable(handle, false);

2.17 DeviceControlLaserPowerConfig 设置激光亮度

该接口用于调整激光器亮度。
示例如下:

cl.DeviceControlLaserPowerConfig(handle, 80);

2.18 DeviceColorStreamIspEnable 打开RGB的ISP

该接口用于打开/关闭软件isp。
示例如下:

cl.DeviceColorStreamIspEnable(handle, true);

2.19 DeviceStreamMapDepthImageToColorCoordinate 深度图对齐到彩色图

该接口用于将深度图坐标映射到彩色图,可参考fetch_registration_cs*。
示例如下:
SDK3.6.51此接口有变化,若SDK版本低于3.6.51,以下代码不可用。

cl.DeviceStreamMapDepthImageToColorCoordinate(depth_calib,depth,scale_unit,color_calib,undsitortion_color.width,undsitortion_color.height,registration_depth);

2.20 DeviceStreamMapRGBImageToDepthCoordinate 彩色图对齐到深度图

该接口用于将彩色图坐标映射到深度图。
示例如下:

cl.DeviceStreamMapRGBImageToDepthCoordinate(depth_calib,depth,scale_unit,color_calib, undsitortion_color, registration_color);

SDK3.6.66新增接口。

2.21 DeviceStreamDoUndistortion 做畸变校正

该接口用于对图像做畸变校正,可参考fetch_registration_cs。
示例如下:

cl.DeviceStreamDoUndistortion(color_calib, color, undsitortion_color);

2.22 DeviceControlTriggerModeEnable 设置相机工作模式

`该接口用于设置相机的工作模式。·
示例如下:

cl.DeviceControlTriggerModeEnable(handle, 1);

0代表 TY_TRIGGER_MODE_OFF,
1代表 TY_TRIGGER_MODE_SLAVE。

2.23 DeviceControlTriggerModeSendTriggerSignal 发送软触发指令

该接口用于给相机发送软触发命令,类似于C++中TYSendSoftTrigger。
示例如下:

cl.DeviceControlTriggerModeSendTriggerSignal(handle);

2.24DeviceStreamMapDepthImageToPoint3D 深度图转点云

该接口用于将深度图转换成点云数据,可参fetch_point3d_cs。
示例如下:

cl.DeviceStreamMapDepthImageToPoint3D(image, depth_calib_data, f_depth_scale, p3d_list);

2.25 IPv4StringToInt 将字符串转换成整型

该接口可以将字符串转换成整型,应用于相机的ip设置。

但是因为没有TYForceDeviceIP接口,所以只把参数写入了相机,不会立刻更新,需要重启相机才可以生效。

2.25.1 ip设置

int ip = cl.IPv4StringToInt("0.0.0.0");
DevParam param = cl.DevParamFromInt(ip);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_IP, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_IP);
int read_param_m = read_param.toInt();
Console.WriteLine($"{read_param_m}");

2.25.2 netmask设置

int netmask = cl.IPv4StringToInt("0.0.0.0");
DevParam param1 = cl.DevParamFromInt(netmask);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_SUBMASK, param1);
DevParam read_param1 = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_SUBMASK);
int read_param_m1 = read_param1.toInt();
Console.WriteLine($"{read_param_m1}");

2.25.3 gateway设置

int gateway = cl.IPv4StringToInt("0.0.0.0");
DevParam param2 = cl.DevParamFromInt(gateway);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_GATEWAY, param2);
DevParam read_param2 = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_GATEWAY);
int read_param_m2 = read_param2.toInt();
Console.WriteLine($"{read_param_m2}");

2.26 DevParamFromInt 设置Int变量

该接口用于定义Int类型的变量,变量数据类型:int。
示例如下:

DevParam param =  cl.DevParamFromInt(4096);

2.27 DevParamFromEnum 设置枚举变量

该接口用于定义Enum类型的变量,变量数据类型:uint。
示例如下:

DevParam param =  cl.DevParamFromEnum(TY_DEPTH_QUALITY_BASIC);

2.28 DevParamFromBool 设置Bool变量

该接口用于定义Bool型变量,用于设置Bool类型的feature。
示例如下:

DevParam param =  cl.DevParamFromBool(true);

2.29 DevParamFromFloat 设置Float变量

该接口用于定义Float型变量,用于设置Float类型的feature。
示例如下:

DevParam param = cl.DevParamFromFloat(2.2f);

2.30 DeviceSetParameter 设置相机参数

该接口用于设置相机参数,可以设置Int、Enum、Bool、Float、Array型参数。

2.31 DeviceGetParameter 获取相机参数

该接口用于读取相机参数,可以读取Int、Enum、Bool、Float、Array型参数。
DeviceSetParameterDeviceGetParameter的示例代码如下:

2.31.1 Int型 获取Int类型

DevParam param = cl.DevParamFromInt(1088);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_EXPOSURE_TIME, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_EXPOSURE_TIME);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

2.31.2 Enum型 获取枚举类型

DevParam param = cl.DevParamFromEnum(TY_TIME_SYNC_TYPE_HOST);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TIME_SYNC_TYPE, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TIME_SYNC_TYPE);
uint m_read_param = read_param.toEnum();
Console.WriteLine($"current value {m_read_param}");
EnumEntryVector m_read_param2 = read_param.eList();
for (int i = 0; i < m_read_param2.Count(); i++){Console.WriteLine($"{ m_read_param2[i].value}");
}

2.31.3 Bool型 获取Bool参数

DevParam param = cl.DevParamFromBool(false);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_EXPOSURE, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_EXPOSURE);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

2.31.4 Float型 获取Float参数

DevParam param = cl.DevParamFromFloat(0.0125f);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_FLOAT_SCALE_UNIT, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_FLOAT_SCALE_UNIT);
float m_read_param = read_param.toFloat();
Console.WriteLine($"current value {m_read_param}");
float min = read_param.fMin();
float max = read_param.fMax();
float inc = read_param.fInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

2.31.5 Array型 获取BYTEARRAY参数

ByteArrayVector array = new ByteArrayVector { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0 };DevParam arr = cl.DevParamFromByteArray(array);cl.DeviceSetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_BYTEARRAY_HDR_PARAMETER,arr);DevParam hdr_arry = cl.DeviceGetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_BYTEARRAY_HDR_PARAMETER);ByteArrayVector hdr_arry_1 = hdr_arry.toByteArray();for (int i = 0; i < hdr_arry_1.Count(); i++){Console.Write($",{hdr_arry_1[i]}");}

2.31.6 Struct(roi)型 获取Struct类型

PercipioAecROI roi = new PercipioAecROI(0, 0, 640, 480);
DevParam param = cl.DevParamFromPercipioAecROI(roi);cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_STRUCT_AEC_ROI, param);DevParam readParam = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_STRUCT_AEC_ROI);
ArrayVector mReadParam = readParam.toArray();
Console.WriteLine("aec roi: " + string.Join(",", mReadParam));

2.32 get_netinfo 获取网络相机信息接口

该接口可用于获取打开的网络相机的设备信息,如ip、mac、netmask、gateway。
ip的获取示例如下:

handle = cl.Open(dev_list[select].id);
Console.WriteLine("ip {0}", dev_list[select].get_netinfo().ip());

2.33 DeviceLoadDefaultParameters 加载相机配置文件

该接口用于加载相机的配置文件(custom_block.bin文件中保存的相机参数json文件)。

int err = cl.DeviceLoadDefaultParameters(handle);if (err != TY_STATUS_OK)Console.WriteLine(string.Format("Load default parameters fail: {0}!", err));elseConsole.WriteLine(string.Format("Load default parameters successful!"));

支持加载的参数类型有Int、Float、Enum、Bool、和BYTEARRAY。

2.34 DeviceWriteDefaultParametersFromJSFile 将参数写入到相机

该接口用于将本地json文件中保存的参数内容写入相机custom_block.bin文件。

string filePath = @"C:\Users\G\Desktop\1.json";
cl.DeviceWriteDefaultParametersFromJSFile(handle, filePath);

2.35 DeviceClearDefaultParameters 清除相机参数

用于清除相机内存中的内容。

cl.DeviceClearDefaultParameters(handle);

2.36 DeviceHasStream 判断相机是否在取流

该接口用于判断相机是否具有特定的数据流,返回值为bool型。
示例:判断相机是否具有color数据流。

bool has_stream = false;
has_stream = cl.DeviceHasStream(handle, PERCIPIO_STREAM_IR_RIGHT);
Console.WriteLine($"has right ir  {has_stream}");

2.37 DeviceReadRectifiedRotationData

该接口用于读取V相机的IR rotation。
示例:读取IR rotation数据

PercipioRectifyRotaData LEFTIR_rot_data = cl.DeviceReadRectifiedRotationData(handle, PERCIPIO_STREAM_IR_LEFT);
CalibDataVector LEFTIR_r_data = LEFTIR_rot_data.Data();
Console.WriteLine(string.Format(":IR_rot_data"));
dump_calib_data(LEFTIR_r_data, 3, 3);

2.38 DeviceReadRectifiedIntrData

该接口用于读取V相机的IR rectified intrinsic。

PercipioRectifyIntrData LEFTIR_int_data = cl.DeviceReadRectifiedIntrData(handle, PERCIPIO_STREAM_IR_LEFT);
CalibDataVector LEFTIR_i_data = LEFTIR_int_data.Data();
Console.WriteLine(string.Format(":IR_ntrinsic _data"));
dump_calib_data(LEFTIR_i_data, 3, 3);

3.组件属性设置

3.1 Device组件

3.1.1 TY_INT_PERSISTENT_IP 静态 IP 地址

int ip = cl.IPv4StringToInt("0.0.0.0");
DevParam param = cl.DevParamFromInt(ip);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_IP, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_IP);
int read_param_m = read_param.toInt();
Console.WriteLine($"{read_param_m}");

3.1.2 TY_INT_PERSISTENT_SUBMASK 静态 IP 子网掩码

int netmask = cl.IPv4StringToInt("0.0.0.0");
DevParam param1 = cl.DevParamFromInt(netmask);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_SUBMASK, param1);
DevParam read_param1 = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_SUBMASK);
int read_param_m1 = read_param1.toInt();
Console.WriteLine($"{read_param_m1}");

3.1.3 TY_INT_PERSISTENT_GATEWAY 静态 IP 网关

int gateway = cl.IPv4StringToInt("0.0.0.0");
DevParam param2 = cl.DevParamFromInt(gateway);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_GATEWAY, param2);
DevParam read_param2 = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PERSISTENT_GATEWAY);
int read_param_m2 = read_param2.toInt();
Console.WriteLine($"{read_param_m2}");

3.1.4 TY_INT_PACKET_DELAY 数据传输延迟时间

原理说明:Packet_Delay包延迟时间,是增加一张图像帧头和帧尾之间,Block id与Block id之间的时间间隔,通过增加Block id时间间隔,适当牺牲帧率,来降低对实时带宽的要求,保证相机在网络较差的环境也能取到图。
在这里插入图片描述

DevParam param = cl.DevParamFromInt(0);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PACKET_DELAY, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PACKET_DELAY);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.1.5 TY_INT_PACKET_SIZE 数据传输包大小

DevParam param = cl.DevParamFromInt(1500);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PACKET_SIZE, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_PACKET_SIZE);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.1.6 TY_BOOL_GVSP_RESEND 网络重传

设置相机网络重传指令,网络较差时防止丢包。

DevParam param = cl.DevParamFromBool(false);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_BOOL_GVSP_RESEND, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_BOOL_GVSP_RESEND);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.1.7 TY_INT_ACCEPTABLE_PERCENT 接收包比例

通过设置接收包比例,正常情况下,相机输出的行数在帧超时时间内达到设置的图像高度(Height参数),输出一帧图像。

若相机输出的行数在帧超时时间内未达到设置的图像高度(Height参数),则SDK按照实际高度输出该图像(设定的出图比例)。

DevParam param = cl.DevParamFromInt(90);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_ACCEPTABLE_PERCENT, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_ACCEPTABLE_PERCENT);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.1.8 TY_BOOL_KEEP_ALIVE_ONOFF 状态保持开关

DevParam param = cl.DevParamFromBool(false);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_BOOL_KEEP_ALIVE_ONOFF, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_BOOL_KEEP_ALIVE_ONOFF);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.1.9 TY_INT_KEEP_ALIVE_TIME 状态保持时间

DevParam param = cl.DevParamFromInt(3000);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_KEEP_ALIVE_TIMEOUT, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_KEEP_ALIVE_TIMEOUT);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.1.10 TY_ENUM_TRIGGER_POL 触发沿设置

 DevParam param = cl.DevParamFromEnum(TY_TRIGGER_POL_FALLINGEDGE);cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TRIGGER_POL, param);DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TRIGGER_POL);uint m_read_param = read_param.toEnum();Console.WriteLine($"current value {m_read_param}");EnumEntryVector m_read_param2 = read_param.eList();for (int i = 0; i < m_read_param2.Count(); i++){Console.WriteLine($"{ m_read_param2[i].value}");}

3.1.11 TY_INT_FRAME_PER_TRIGGER 触发出图数

该功能可以设置相机在接收到一次软触发/硬触发后的出图数量,相机默认接收一次信号后只出一帧图像,此功能不建议使用。

DevParam param = cl.DevParamFromInt(5);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_FRAME_PER_TRIGGER, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_FRAME_PER_TRIGGER);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
EnumEntryVector m_read_param2 = read_param.eList();
for (int i = 0; i < m_read_param2.Count(); i++)
{
Console.WriteLine($"{ m_read_param2[i].value}");
}

3.1.12 TY_INT_CAPTURE_TIME_US 采集时间

DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_CAPTURE_TIME_US);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");

3.1.13 TY_INT_NTP_SERVER_IP ntp服务器ip

ntp服务器ip

int ip = cl.IPv4StringToInt("0.0.0.0");
DevParam param = cl.DevParamFromInt(ip);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_NTP_SERVER_IP, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_INT_NTP_SERVER_IP);
int read_param_m = read_param.toInt();
Console.WriteLine($"{read_param_m}");

3.1.14 TY_BOOL_CMOS_SYNC 图像同步

DevParam param = cl.DevParamFromBool(false);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_BOOL_CMOS_SYNC, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_BOOL_CMOS_SYNC);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

使用FM851-E2相机,对比开启和关闭TY_BOOL_CMOS_SYNC后,深度图像的帧率, TY_BOOL_CMOS_SYNC =false时帧率比TY_BOOL_CMOS_SYNC = true时高。

3.1.15 TY_ENUM_STREAM_ASYNC 数据流同步

DevParam param = cl.DevParamFromEnumt(TY_STREAM_ASYNC_ALL);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_STREAM_ASYNC, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_STREAM_ASYNC);
uint m_read_param = read_param.toEnum();
Console.WriteLine($"current value {m_read_param}");
EnumEntryVector m_read_param2 = read_param.eList();
for (int i = 0; i < m_read_param2.Count(); i++)
{
Console.WriteLine($"{ m_read_param2[i].value}");
}

3.1.16 TY_ENUM_TIME_SYNC_TYPE 相机对时功能

DevParam param = cl.DevParamFromEnum(TY_TIME_SYNC_TYPE_HOST);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TIME_SYNC_TYPE, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TIME_SYNC_TYPE);
uint m_read_param = read_param.toEnum();
Console.WriteLine($"current value {m_read_param}");
EnumEntryVector m_read_param2 = read_param.eList();
for (int i = 0; i < m_read_param2.Count(); i++){
Console.WriteLine($"{ m_read_param2[i].value}");
}

3.1.17 TY_BOOL_TIME_SYNC_READY 判断对时是否成功

DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_BOOL_TIME_SYNC_READY);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.1.18 TY_ENUM_CONFIG_MODE 出图模式

V系列相机预设的参数,不同模式下相机的精度不同

DevParam param = cl.DevParamFromEnum(TY_CONFIG_MODE_PRESET0);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_CONFIG_MODE, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_CONFIG_MODE);
uint m_read_param = read_param.toEnum();
Console.WriteLine($"current value {m_read_param}");
EnumEntryVector m_read_param2 = read_param.eList();
for (int i = 0; i < m_read_param2.Count(); i++)
{
Console.WriteLine($"{ m_read_param2[i].value}");
}

3.2 Depth 组件

3.2.1 TY_ENUM_IMAGE_MODE 深度图图像格式

DevParam param = cl.DevParamFromEnum(TY_PIXEL_FORMAT_DEPTH16 | TY_RESOLUTION_MODE_1280x960);cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_ENUM_IMAGE_MODE, param);DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_ENUM_IMAGE_MODE);uint m_read_param = read_param.toEnum();Console.WriteLine($"current value {m_read_param}");EnumEntryVector m_read_param2 = read_param.eList();for (int i = 0; i < m_read_param2.Count(); i++){Console.WriteLine($"description {m_read_param2[i].description}, value { m_read_param2[i].value} ");}

3.2.2 TY_FLOAT_SCALE_UNIT 设置深度图中像素值的单位

深度数据可表示最大值 = 65536 * scale unit。
设定值越小,深度计算的精度越高,但设定值过小可能会导致深度计算出现误差。

DevParam param = cl.DevParamFromFloat(0.0125f);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_FLOAT_SCALE_UNIT, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_FLOAT_SCALE_UNIT);
float m_read_param = read_param.toFloat();
Console.WriteLine($"current value {m_read_param}");
float min = read_param.fMin();
float max = read_param.fMax();
float inc = read_param.fInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.3 Color组件

3.3.1 TY_INT_EXPOSURE_TIME 设置RGB曝光时间

设置RGB相机的曝光时间,该功能可调控图像传感器的曝光时间,从而影响图像的亮度与清晰度。

DevParam param = cl.DevParamFromInt(500);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_EXPOSURE_TIME, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_EXPOSURE_TIME);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.3.2 TY_INT_ANALOG_GAIN 设置模拟增益

该参数可调控图像传感器的模拟增益,优化图像质量,平衡亮度与细节,减少不必要的噪声。

DevParam param = cl.DevParamFromInt(1);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_ANALOG_GAIN, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_ANALOG_GAIN);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.3.3 TY_INT_R_GAIN 设置R通道增益

r gain 设定值越大,彩色图像越红。

DevParam param = cl.DevParamFromInt(1);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_R_GAIN, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_R_GAIN);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.3.4 TY_INT_G_GAIN 设置G通道增益

g gain 设定值越大,彩色图像越绿。

DevParam param = cl.DevParamFromInt(1);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_G_GAIN, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_G_GAIN);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.3.5 TY_INT_B_GAIN 设置B通道增益

b gain 设定值越大,彩色图像越蓝。

DevParam param = cl.DevParamFromInt(1);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_B_GAIN, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_B_GAIN);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

设置 r、g、b 三个通道的增益,需先关闭 RgbAWB (自动白平衡)功能,否则自动白平衡功能会与手动设置的 r、g、b 通道增益冲突,影响图像效果。

3.3.6 TY_BOOL_AUTO_GAIN 设置RGB的自动增益

设置RGB相机的自动增益

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_GAIN, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_GAIN);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.3.7 TY_BOOL_AUTO_AWB 设置RGB相机的白平衡

设置RGB相机的自动白平衡,该功能可用于校正由不同光源引起的色彩偏差,提高图像的真实性和色彩准确度。

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_AWB, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_AWB);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.3.8 TY_STRUCT_AEC_ROI 设置RGB的区域曝光

该功能可以根据图像中感兴趣区域的亮度,自动调整图像曝光时间和增益,实现更好的图像效果。

PercipioAecROI roi = new PercipioAecROI(0, 0, 640, 480);
DevParam param1 = cl.DevParamFromPercipioAecROI(roi);cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_STRUCT_AEC_ROI, param1);DevParam readParam = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_STRUCT_AEC_ROI);
ArrayVector mReadParam = readParam.toArray();
Console.WriteLine("aec roi: " + string.Join(",", mReadParam));

3.3.9 TY_BOOL_AUTO_EXPOSURE 设置RGB的自动曝光

设置RGB相机的自动曝光属性,该功能可以根据图像亮度动态调整彩色图像曝光时间和增益,从而避免图像过曝或欠曝。

DevParam param = cl.DevParamFromBool(false);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_EXPOSURE, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_BOOL_AUTO_EXPOSURE);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.3.10 TY_INT_AE_TARGET_Y 自动曝光目标亮度

该功能通过设定图像的理想亮度水平,以优化高对比度场景下的彩色图像效果。
根据彩色图实时调整 AETargetLuminance ,设定值越大,图像亮度越高。

DevParam param = cl.DevParamFromInt(200);
cl.DeviceSetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_AE_TARGET_Y, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_RGB_CAM, TY_INT_AE_TARGET_Y);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.4 IR和光源组件

3.4.1 TY_INT_GAIN 设置IR增益

该部分参数可调控图像传感器的增益,优化图像质量,平衡亮度与细节,减少不必要的噪声。

DevParam param = cl.DevParamFromInt(500);
cl.DeviceSetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_INT_GAIN, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_INT_GAIN);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

同时调节 Left IR 和 Right IR 的 gain、analog gain参数,以确保生成的深度图效果良好。

3.4.2 TY_FLOAT_EXPOSURE_TIME_US 曝光时间

该功能可调控图像传感器的曝光时间,从而影响图像的亮度与清晰度。

DevParam param2 = cl.DevParamFromFloat(1088);
int error2 = cl.DeviceSetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_FLOAT_EXPOSURE_TIME_US, param2);
DevParam read_param2 = cl.DeviceGetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_FLOAT_EXPOSURE_TIME_US);
float m_read_param2 = read_param2.toFloat();
Console.WriteLine($"current value {m_read_param2}");
float min2 = read_param2.fMin();
float max2 = read_param2.fMax();
float inc2 = read_param2.fInc();
Console.WriteLine($"min :{min2},max:{max2},inc:{inc2}");

同时调节 Left IR 和 Right IR 的 exposure time 参数,以确保生成的深度图效果良好。

3.4.3 TY_BOOL_LASER_AUTO_CTRL 开关激光器

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_LASER, TY_BOOL_LASER_AUTO_CTRL, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_LASER, TY_BOOL_LASER_AUTO_CTRL);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.4.4 TY_INT_LASER_POWER 调节激光器亮度

DevParam param = cl.DevParamFromInt(1);
cl.DeviceSetParameter(handle, TY_COMPONENT_LASER, TY_INT_LASER_POWER, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_LASER, TY_INT_LASER_POWER);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.4.5 TY_BOOL_HDR 高动态范围

该功能用于优化高对比度场景的深度成像效果,设置完 HDR 参数后需要调节 Left/Right IR 的曝光时间,以获得成像效果最佳的深度图。

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_IR_CAM_LEFT,TY_BOOL_HDR, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_BOOL_HDR);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.4.6 TY_BYTEARRAY_HDR_PARAMETER 设置HDR参数

ByteArrayVector array = new ByteArrayVector { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0, 0, 0 };
DevParam arr = cl.DevParamFromByteArray(array);
cl.DeviceSetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_BYTEARRAY_HDR_PARAMETER,arr);
DevParam hdr_arry = cl.DeviceGetParameter(handle, TY_COMPONENT_IR_CAM_LEFT, TY_BYTEARRAY_HDR_PARAMETER);
ByteArrayVector hdr_arry_1 = hdr_arry.toByteArray();
for (int i = 0; i < hdr_arry_1.Count(); i++){Console.Write($",{hdr_arry_1[i]}");}

3.4.7 TY_BOOL_IR_FLASHLIGHT 设置泛光使能

该功能用于辅助相机在线动态标定。

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_LASER, TY_BOOL_IR_FLASHLIGHT, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_LASER, TY_BOOL_IR_FLASHLIGHT);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.4.8 TY_INT_IR_FLASHLIGHT_INTENSITY 设置泛光亮度值

DevParam param = cl.DevParamFromInt(0);
cl.DeviceSetParameter(handle, TY_COMPONENT_LASER, TY_INT_IR_FLASHLIGHT_INTENSITY, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_LASER, TY_INT_IR_FLASHLIGHT_INTENSITY);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.5 TOF相机Depth组件

3.5.1 TY_ENUM_DEPTH_QUALITY 深度质量

该功能用于设置相机输出的深度图质量,为适应不同应用的需求。
basic:深度值抖动幅度大,输出帧率高。
medium:深度值抖动幅度中等,输出帧率中等。
high:深度值抖动幅度小,输出帧率低。
注:有的TOF相机不支持basic模式,有的不支持high模式,具体以相机实际参数为准。

DevParam param = cl.DevParamFromEnum(TY_DEPTH_QUALITY_HIGH);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_ENUM_DEPTH_QUALITY, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_ENUM_DEPTH_QUALITY);
uint m_read_param = read_param.toEnum();
Console.WriteLine($"current value {m_read_param}");
EnumEntryVector m_read_param2 = read_param.eList();
for (int i = 0; i < m_read_param2.Count(); i++)
{
Console.WriteLine($"{ m_read_param2[i].value}");
}

3.5.2 TY_INT_TOF_CHANNEL 调制频道

该功能用于设置 ToF 深度相机调制频道。不同调制频道的调制频率不同,互不干扰。

DevParam param = cl.DevParamFromInt(5);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_CHANNEL, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_CHANNEL);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.5.3 TY_INT_TOF_MODULATION_THRESHOLD 激光调制光强

该功能用于设置 ToF 深度相机接收激光调制光强的阈值,小于此阈值的像素点不参与计算深度,即像素点的深度值赋值为 0。

DevParam param = cl.DevParamFromInt(5);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_MODULATION_THRESHOLD, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_MODULATION_THRESHOLD);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.5.4 TY_INT_TOF_ANTI_SUNLIGHT_INDEX 抗阳光指数

该功能用于优化 ToF 相机在阳光下的深度成像效果。
若在室内场景或阳光较弱时,建议将该指数设置为0;在室外场景或有一定阳光时,设置为1或2。

DevParam param = cl.DevParamFromInt(2);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_ANTI_SUNLIGHT_INDEX, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_ANTI_SUNLIGHT_INDEX);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.5.5 TY_INT_TOF_JITTER_THRESHOLD 抖动过滤

该功能用于设置 ToF 深度相机的抖动过滤阈值。阈值设置值越大,深度图边缘抖动的深度数据过滤得越少。

DevParam param = cl.DevParamFromInt(1);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_JITTER_THRESHOLD, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_JITTER_THRESHOLD);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.5.6 TY_INT_TOF_HDR_RATIO 高动态范围比

该功能用于优化高对比度场景的深度成像效果。
注:目前仅TM430/TM421相机支持此功能,设置为1,默认不生效。

DevParam param = cl.DevParamFromInt(1);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_HDR_RATIO, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_TOF_HDR_RATIO);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
nt min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.5.7 TY_BOOL_TOF_ANTI_INTERFERENCE 抗多机干扰

该功能用于过滤多台相机共存于同一场景中并且在同一调制频道(ToF Channel),由于信号相互干扰引发的异常深度值。

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_TOF_ANTI_INTERFERENCE, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_TOF_ANTI_INTERFERENCE);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.5.8 TY_INT_MAX_SPECKLE_SIZE 聚类斑点面积

聚类斑点面积小于 Max speckle size 面积阈值的聚类斑点会被滤除。
面积阈值设置越大,滤除的聚类斑点越多。

DevParam param = cl.DevParamFromInt(200);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_MAX_SPECKLE_SIZE, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_MAX_SPECKLE_SIZE);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.5.9 TY_INT_MAX_SPECKLE_DIFF 聚类阈值

邻像素的深度差值小于 Max speckle diff 聚类阈值,则该相邻像素属于同一个聚类斑点
聚类阈值设置越大,相邻像素属于同一聚类斑点越多。

DevParam param = cl.DevParamFromInt(200);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_MAX_SPECKLE_DIFF, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_MAX_SPECKLE_DIFF);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6 PS/FM855等相机SGBM特性

在这里插入图片描述

3.6.1 TY_INT_SGBM_DISPARITY_NUM 设置视差搜索范围

设定值越大,相机 Z 方向的测量范围越大,但算力会增加。建议设置成 16 的整数倍。

DevParam param = cl.DevParamFromInt(3);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_DISPARITY_NUM, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_DISPARITY_NUM);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.2 TY_INT_SGBM_DISPARITY_OFFSET 设置开始搜索的视差值。

DevParam param = cl.DevParamFromInt(3);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_DISPARITY_OFFSET, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_DISPARITY_OFFSET);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

深度范围减小, disparityNum大概率减小。
深度范围远端往相机端缩进, disparityOffset变大,反之亦反。

3.6.3 TY_INT_SGBM_MATCH_WIN_HEIGHT 设置视差匹配窗口的高。

设定值必须为奇数。

DevParam param = cl.DevParamFromInt(3);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MATCH_WIN_HEIGHT, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MATCH_WIN_HEIGHT);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.4 TY_INT_SGBM_MATCH_WIN_WIDTH 设置视差匹配窗口的宽。

设定值必须为奇数。

DevParam param = cl.DevParamFromInt(5);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MATCH_WIN_WIDTH, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MATCH_WIN_WIDTH);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

视差匹配窗口(match window height * match window width)越大,深度图更加平滑,但是精度会降低。
视差匹配窗口越小,深度图显示更多细节,但是出现错误匹配的几率越大。

3.6.5 TY_INT_SGBM_IMAGE_NUM 设置用于深度计算的 IR 图像数量

设定值越大,输出深度图像质量越好,帧率越小。

DevParam param = cl.DevParamFromInt(3);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_IMAGE_NUM, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_IMAGE_NUM);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.6 TY_INT_SGBM_SEMI_PARAM_P1 设置相邻像素 (+/-1) 约束惩罚参数 P1。

设定值越大,深度图越平滑。

DevParam param = cl.DevParamFromInt(10000);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_SEMI_PARAM_P1, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_SEMI_PARAM_P1);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.7 TY_INT_SGBM_SEMI_PARAM_P1_SCALE 设置相邻像素 (+/-1) 约束惩罚参数 P1_scale

设定值越小,深度图越平滑。

DevParam param = cl.DevParamFromInt(5);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_SEMI_PARAM_P1_SCALE, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_SEMI_PARAM_P1_SCALE);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.8 TY_INT_SGBM_SEMI_PARAM_P2 设置周围像素约束惩罚参数 P2

设定值越大,深度图越平滑。P2 > P1。
该参数可以有效地处理纹理丰富区域,减少误匹配的数量。

DevParam param = cl.DevParamFromInt(0);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_SEMI_PARAM_P2, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_SEMI_PARAM_P2);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.9 TY_BOOL_SGBM_HFILTER_HALF_WIN 搜索滤波开关

用于进一步优化深度图,去除噪声和不连续性,对物体边缘点云更友好。

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_HFILTER_HALF_WIN, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_HFILTER_HALF_WIN);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.6.10 TY_INT_SGBM_UNIQUE_FACTOR 最优匹配点与次优匹配点的百分比

设定值越大,匹配代价越唯一,错误匹配点过滤掉的越多

DevParam param = cl.DevParamFromInt(511);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_UNIQUE_FACTOR, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_UNIQUE_FACTOR);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.11 TY_INT_SGBM_UNIQUE_ABSDIFF 最优匹配点与次优匹配点差值的绝对值

设定值越大,匹配代价越唯一,错误匹配点过滤掉的越多

DevParam param = cl.DevParamFromInt(10000);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_UNIQUE_ABSDIFF, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_UNIQUE_ABSDIFF);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.12 TY_BOOL_SGBM_LRC 左右一致性检查开关。

max LRC diff 设定值越小,匹配结果越可靠。

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_LRC, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_LRC);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.6.13 TY_INT_SGBM_LRC_DIFF

DevParam param = cl.DevParamFromInt(5);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_LRC_DIFF, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_LRC_DIFF);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.14 TY_BOOL_SGBM_MEDFILTER 中值滤波开关

用于消除孤立的噪声点,同时尽可能地保留图像的边缘信息。

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_MEDFILTER, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_BOOL_SGBM_MEDFILTER);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.6.15 TY_INT_SGBM_MEDFILTER_THRESH 中值滤波阈值

median filter thresh 设定值越大,过滤的噪点越多,但也可能会导致深度图的细节信息丢失。

DevParam param = cl.DevParamFromInt(5);
cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MEDFILTER_THRESH, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_MEDFILTER_THRESH);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.6.16 TY_INT_SGBM_TEXTURE_THRESH 纹理滤波阈值

  DevParam param = cl.DevParamFromInt(1088);int error = cl.DeviceSetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_TEXTURE_THRESH, param);DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_TEXTURE_THRESH);int m_read_param = read_param.toInt();int min = read_param.mMin();int max = read_param.mMax();int inc = read_param.mInc();Console.WriteLine($"min :{min},max:{max},inc:{inc}+++++{m_read_param}");

3.6.17 TY_INT_SGBM_TEXTURE_OFFSET 纹理滤波差值

DevParam read_param1 = cl.DeviceGetParameter(handle, TY_COMPONENT_DEPTH_CAM, TY_INT_SGBM_TEXTURE_OFFSET);
int m_read_param1 = read_param1.toInt();
int min1 = read_param1.mMin();
int max1 = read_param1.mMax();
int inc1 = read_param1.mInc();
Console.WriteLine($"min :{min1},max:{max1},inc:{inc1}++++++++++{m_read_param1}");

运行上报[error] The feature is not writable. 改属性仅可读。

3.7 带泛光相机RGB属性

3.7.1 TY_BOOL_RGB_FLASHLIGHT 设置RGB泛光使能

DevParam param = cl.DevParamFromBool(true);
cl.DeviceSetParameter(handle, TY_COMPONENT_LASER, TY_BOOL_RGB_FLASHLIGHT, param);
DevParam status = cl.DeviceGetParameter(handle, TY_COMPONENT_LASER, TY_BOOL_RGB_FLASHLIGHT);
bool m_status = status.toBool();
Console.WriteLine($"current value {m_status}");

3.7.2 TY_INT_RGB_FLASHLIGHT_INTENSITY 设置RGB泛光数值

DevParam param = cl.DevParamFromInt(0);
cl.DeviceSetParameter(handle, TY_COMPONENT_LASER, TY_INT_RGB_FLASHLIGHT_INTENSITY, param);
DevParam read_param = cl.DeviceGetParameter(handle, TY_COMPONENT_LASER, TY_INT_RGB_FLASHLIGHT_INTENSITY);
int m_read_param = read_param.toInt();
Console.WriteLine($"current value {m_read_param}");
int min = read_param.mMin();
int max = read_param.mMax();
int inc = read_param.mInc();
Console.WriteLine($"min :{min},max:{max},inc:{inc}");

3.8 其他新增属性

3.8.1 读取有哪些温度传感器

 DevParam param5 = cl.DevParamFromEnum(TY_TEMPERATURE_LEFT);int error5 = cl.DeviceSetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TEMPERATURE_ID, param5);

3.8.2 读取温度值

 DevParam read_param5 = cl.DeviceGetParameter(handle, TY_COMPONENT_DEVICE, TY_ENUM_TEMPERATURE_ID);uint m_read_param5 = read_param5.toEnum();Console.WriteLine($"current value {m_read_param5}");EnumEntryVector l_read_param5 = read_param5.eList();for (int i = 0; i < l_read_param5.Count(); i++){float tmp= cl.DeviceControlReadTemperature(handle, l_read_param5[i].value);Console.WriteLine(string.Format("{0}={1}",l_read_param5[i].description,tmp)); 
}

3.8.3 TYSetLogLevel

TYSetLogLevel(5);
// 控制台输出的日志信息,设置Log等级详情:TY_LOG_LEVEL_VERBOSE = 1,
TY_LOG_LEVEL_DEBUG = 2,
// TY_LOG_LEVEL_INFO = 3,
TY_LOG_LEVEL_WARNING = 4,
// TY_LOG_LEVEL_ERROR = 5,
TY_LOG_LEVEL_NEVER = 9,

4.常见问题FAQ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

thinkphp8.0上传图片到阿里云对象存储(oss)

1、开通oss,并获取accessKeyId、accessKeySecret <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><tit…

跳跃连接(Skip Connection)与残差连接(Residual Connection)

1. 跳跃连接&#xff08;Skip Connection&#xff09;的基本概念 跳跃连接是一种在深度神经网络中广泛应用的技术&#xff0c;它允许信息在网络中跨层直接传递。在传统的神经网络里&#xff0c;每一层的输出仅仅是前一层输出经过特定变换后的结果。而在具备跳跃连接的网络中&a…

【硬件视界9】网络硬件入门:从网卡到路由器

🌟引言: 专栏:《硬件视界》 【硬件视界8】电源供应器(PSU):计算机的“心脏“ 在数字化高速发展的今天,网络已成为我们日常生活和工作中不可或缺的基础设施。而支撑这一基础设施的核心要素,便是各种各样的网络硬件设备。从连接计算机到网络的网络适配器,到负责数据转发与…

最小生成树理论

1. 基本定义 生成树&#xff1a;在一个连通无向图中&#xff0c;一个生成树是包含所有顶点且边数为 n−1&#xff08;n为顶点数&#xff09;的无环连通子图。 最小生成树&#xff1a;在所有生成树中&#xff0c;边权和最小的那一棵树。也就是说&#xff0c;若每条边有一个非负…

STM32 HAL库 CANFD配置工具

用法说明&#xff1a; 该工具适用于STM32HAL库&#xff0c;可一键生成CANFD的HAL库配置代码。计算依据为HAL库&#xff0c;并参考ZLG标准。 软件界面&#xff1a; 仓库地址&#xff1a; HAL CANFD Init Gen: 适用于STM32控制器的HAL库 版本说明&#xff1a; V1.2.0 &#x…

【11408学习记录】考研英语长难句解析 | 语法拆分+写作模板+真题精讲(附高分秘籍)

2025.04.05 英语语法总结——长难句并列句并列连词并列句的省略 写作书信写作第二段注意 第三段落款 每日一句词汇第一步&#xff1a;辨别第二步&#xff1a;断开第三步&#xff1a;简化 英语 语法总结——长难句 长难句有两个特点&#xff1a;长、难。 之所以又长又难就是因…

实用的alias别名命令——比2=1+1简单的基础命令

目录 alias命令的用处alias命令的写法让alias别名永久存在的办法下篇预告 alias命令的用处 别名&#xff0c;就是linux系统中的命令的别称&#xff0c;而alias命令&#xff0c;可以显示linux系统当前设定的全部别名&#xff0c;当然&#xff0c;也可以自己定义一个别名。 ali…

Kafka 中的批次

在 Kafka 中&#xff0c;批次&#xff08;Batch&#xff09; 是生产者发送消息的一个重要概念。它对 Kafka 的性能、吞吐量、延迟等有很大影响。批量处理可以使消息发送更高效&#xff0c;减少网络往返和磁盘写入的开销。 下面我将详细解释 Kafka 中的批次机制&#xff0c;包括…

联合、枚举、类型别名

数据类型&#xff1a; 已学--整数、实数、字符、字符串、数组、指针、结构待学--向量&#xff08;vector&#xff09;类型&#xff1a;优于数组非主流的类型--联合&#xff08;union&#xff09;、枚举&#xff08;enum&#xff09; 一、联合 联合类似于结构&#xff0c;可以容…

form+ffmpeg+opus录音压缩音频

说明&#xff1a; formffmpegopus录音压缩音频 效果图&#xff1a; step1:opus格式录音 C:\Users\wangrusheng\RiderProjects\WinFormsApp11\WinFormsApp11\Form1.cs using System; using System.Diagnostics; using System.IO; using System.Windows.Forms;namespace WinFo…

软件工程面试题(三十)

将ISO8859-1字符串转成GB2312编码&#xff0c;语句为&#xff1f; String snew String(text.getBytes(“iso8859-1”),”gb2312”). 说出你用过的J2EE标准的WEB框架和他们之间的比较&#xff1f; 答&#xff1a;用过的J2EE标准主要有&#xff1a;JSP&Servlet、JDBC、JNDI…

每日一题(小白)分析娱乐篇10

由题知计算阶乘之和&#xff0c;我们可以用for循环计算每一次的值把总和放在BigInteger然后进行判断。但是这样明显过于麻烦&#xff0c;我们可以利用数学的本质去思考这个问题&#xff0c;以0结尾的数字乘以一个数字必定为0&#xff0c;阶乘之中必定有2和5结尾的数字相乘得0&a…

【51单片机】2-3【I/O口】震动传感器控制LED灯

1.硬件 51最小系统LED灯模块震动传感器模块 2.软件 #include "reg52.h"sbit led1 P3^7;//根据原理图&#xff08;电路图&#xff09;&#xff0c;设备变量led1指向P3组IO口的第7口 sbit vibrate P3^3;//震动传感器DO接P3.3口void Delay2000ms() //11.0592MHz {…

Linux网络状态监控利器:netstat与ping命令详解

网络状态监控利器&#xff1a;netstat与ping命令详解 在Linux系统的网络管理中&#xff0c;实时监控网络状态是确保系统稳定运行的关键环节。netstat和ping作为两个常用的网络监控工具&#xff0c;分别提供了详细的网络状态信息和网络连通性检测功能。本文将全面解析这两个命令…

【spring cloud Netflix】Eureka注册中心

1.概念 Eureka就好比是滴滴&#xff0c;负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务&#xff0c;而是把自己的 需求告诉Eureka&#xff0c;然后Eureka会把符合你需求的服务告诉你。同时&#xff0c;服务提供方与Eureka之间通过“心跳” 机制进行监控&#xf…

Linux中C++ gdb调试命令

编译可执行文件需要带上-g选项参数 输入回车则重复执行上一次命令&#xff1b; 进入gdb&#xff1a; gdb 程序名运行gdb命令&#xff1a; r打断点命令&#xff1a; b 行号查看断点命令&#xff1a; i b打印变量命令&#xff1a; p 变量名持续查看变量命令&#xff1a; d…

【进收藏夹吃灰】机器学习学习指南

博客标题URL【机器学习】线性回归&#xff08;506字&#xff09;https://blog.csdn.net/from__2025_03_16/article/details/146303423

【通信观察家】2025年Q1通信业技术跃迁与生态重构:AI+低空经济双轮驱动

一、行业动态与投资热点 1. 算力投资加速 1) 腾讯2024年财报显示&#xff0c;AI相关资本开支同比增长221.27%&#xff0c;2025年计划继续加码AI原生应用研发及算力基础设施建设&#xff0c;其自研混元T1模型(Hybrid-Mamba-Transformer架构)已上线并开放云服务。 2) 中国移动和…