圖漾相機——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.pswp.cn/bicheng/75727.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75727.shtml
英文地址,請注明出處:http://en.pswp.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) 中國移動和…