mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-03 19:47:46 +08:00
Big refactoring code
* Removal of unnecessary files * Optimized multi-camera launch * Explicitly list the parameters in the launch file
This commit is contained in:
@@ -444,6 +444,49 @@ void ob_device_set_structured_data(ob_device *device, ob_property_id property_id
|
||||
*/
|
||||
void ob_device_get_structured_data(ob_device *device, ob_property_id property_id, void *data, uint32_t *data_size, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set property struct data.
|
||||
*
|
||||
* @param[in] device Device object
|
||||
* @param[in] property_id Id of the property
|
||||
* @param[in] data_bundle Target data to set
|
||||
* @param[in] Set data callback
|
||||
* @param[in] user_data User-defined data will be returned in the callback
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 设置结构体类型的设备属性
|
||||
|
||||
* @param[in] device 设备对象
|
||||
* @param[in] property_id 要设置的属性id
|
||||
* @param[in] data_bundle
|
||||
要设置的数据内容,注意data_bundle指针为OrbbecSDK外部构建,所以自行释放指针资源,禁止调用ob_delete_data_bundle释放资源,会造成不可预知的错误;
|
||||
* @param[in] cb 设置进度回调
|
||||
* @param[in] user_data 用户自定义数据,会在回调中返回
|
||||
* @param[out] error 记录错误信息
|
||||
* @return void 无返回值
|
||||
* \endif
|
||||
*/
|
||||
void ob_device_set_structured_data_ext(ob_device *device, ob_property_id property_id, ob_data_bundle *data_bundle, ob_set_data_callback cb, void *user_data,
|
||||
ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get property struct data.
|
||||
* @param[in] device Device object
|
||||
* @param[in] property_id Id of the property
|
||||
* @param[out] error Log error messages
|
||||
* @return ob_data_dundle, NOTE: ob_data_dundle must free by ob_delete_data_bundle() because it come from OrbbecSDK's API
|
||||
* \else
|
||||
* @brief 获取结构体类型的设备属性
|
||||
* @param[in] device 设备对象
|
||||
* @param[in] property_id 要获取的属性id
|
||||
* @param[out] error 记录错误信息
|
||||
* @return 返回ob_data_dundle 结构体对象指针,返回的必须调用ob_delete_data_bundle()函数释放资源,否则会造成内存泄漏
|
||||
* \endif
|
||||
*/
|
||||
ob_data_bundle *ob_device_get_structured_data_ext(ob_device *device, ob_property_id property_id, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set raw data type of device property
|
||||
@@ -495,6 +538,44 @@ void ob_device_set_raw_data(ob_device *device, ob_property_id property_id, void
|
||||
*/
|
||||
void ob_device_get_raw_data(ob_device *device, ob_property_id property_id, ob_get_data_callback cb, bool async, void *user_data, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the property protocol version
|
||||
*
|
||||
* @param[in] device Device object
|
||||
* @param[out] error Log error messages
|
||||
* @return ob_protocol_version
|
||||
*
|
||||
* \else
|
||||
*
|
||||
* @brief 获取设备的控制命令协议版本
|
||||
*
|
||||
* @param[in] device 设备对象
|
||||
* @param[out] error 记录错误信息
|
||||
* @return ob_protocol_version
|
||||
* \endif
|
||||
*/
|
||||
ob_protocol_version ob_device_get_protocol_version(ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get cmdVersion of property
|
||||
*
|
||||
* @param[in] device Device object
|
||||
* @param[in] propertyId Property id
|
||||
* @param[out] error Log error messages
|
||||
* @return ob_cmd_version
|
||||
* \else
|
||||
* @brief 获取控制命令的版本号
|
||||
*
|
||||
* @param[in] device 设备对象
|
||||
* @param[in] propertyId 属性id
|
||||
* @param[out] error 记录错误信息
|
||||
* @return ob_cmd_version
|
||||
* \endif
|
||||
*/
|
||||
ob_cmd_version ob_device_get_cmd_version(ob_device *device, ob_property_id property_id, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get supported device properties count
|
||||
@@ -903,6 +984,72 @@ void ob_device_write_authorization_code(ob_device *device, const char *auth_code
|
||||
*/
|
||||
ob_camera_param_list *ob_device_get_calibration_camera_param_list(ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get current depth work mode
|
||||
* @param[in] device Device object
|
||||
* @param[out] error Log error messages
|
||||
* @return ob_depth_work_mode Current depth work mode
|
||||
* \else
|
||||
* @brief 查询当前相机深度模式
|
||||
* @param[in] device 设备对象
|
||||
* @param[out] error 记录错误信息
|
||||
* @return ob_depth_work_mode 当前深度工作模式
|
||||
* \endif
|
||||
*/
|
||||
ob_depth_work_mode ob_device_get_current_depth_work_mode(ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Switch depth work mode by ob_depth_work_mode. Prefer invoke ob_device_switch_depth_work_mode_by_name to switch depth mode
|
||||
* when known the complete name of depth work mode.
|
||||
* @param[in] device Device object
|
||||
* @param[in] work_mode Depth work mode come from ob_depth_work_mode_list which return by ob_device_get_depth_work_mode_list
|
||||
* @param[out] error Log error messages
|
||||
* @return Return switch result. OB_STATUS_OK: success, other failed.
|
||||
* \else
|
||||
* @brief 切换相机深度模式(根据深度工作模式对象),如果知道设备支持的深度工作模式名称,那么推荐用ob_device_switch_depth_work_mode_by_name
|
||||
* @param[in] device 设备对象
|
||||
* @param[in] work_mode 深度工作模式,从深度工作模式列表ob_depth_work_mode_list获取的模式对象(ob_device_get_depth_work_mode_list返回的对象)
|
||||
* @param[out] error 记录错误信息
|
||||
* @return ob_status 设置设置结果,OB_STATUS_OK成功,其他:设置失败
|
||||
* \endif
|
||||
*/
|
||||
ob_status ob_device_switch_depth_work_mode(ob_device *device, const ob_depth_work_mode *work_mode, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Switch depth work mode by work mode name.
|
||||
* @param[in] device Device object
|
||||
* @param[in] mode name Depth work mode name which equals to ob_depth_work_mode.name
|
||||
* @param[out] error Log error messages
|
||||
*
|
||||
* @return Return switch result. OB_STATUS_OK: success, other failed.
|
||||
* \else
|
||||
* @brief 切换相机深度模式(根据深度工作模式名称)
|
||||
* @param[in] device 设备对象
|
||||
* @param[in] mode_name 深度工作模式名称,模式名称必须与ob_depth_work_mode.name一致
|
||||
* @param[out] error 记录错误信息
|
||||
* @return ob_status 设置设置结果,OB_STATUS_OK成功,其他:设置失败
|
||||
* \endif
|
||||
*/
|
||||
ob_status ob_device_switch_depth_work_mode_by_name(ob_device *device, const char *mode_name, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Request support depth work mode list
|
||||
* @param[in] device Device object
|
||||
* @param[out] error Log error messages
|
||||
* @return ob_depth_work_mode_list list of ob_depth_work_mode
|
||||
* \else
|
||||
* @brief 查询当前相机深度模式的列表
|
||||
* @param[in] device 设备对象
|
||||
* @param[out] error 记录错误信息
|
||||
* @return ob_depth_work_mode_list 深度模式列表。注意:返回对象要用ob_delete_depth_work_mode_list()释放资源,否者会内存泄漏
|
||||
* \endif
|
||||
*/
|
||||
ob_depth_work_mode_list *ob_device_get_depth_work_mode_list(ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Device reboot
|
||||
@@ -922,6 +1069,28 @@ ob_camera_param_list *ob_device_get_calibration_camera_param_list(ob_device *dev
|
||||
*/
|
||||
void ob_device_reboot(ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
* @brief 获取当前设备同步配置
|
||||
* @brief 设备同步:包括单机内的不同 Sensor 的曝光同步功能 和 多机同步功能
|
||||
*
|
||||
* @param[in] device 设备对象
|
||||
* @param[out] error 记录错误信息
|
||||
* @return ob_device_sync_config 返回设备同步配置
|
||||
*/
|
||||
ob_device_sync_config ob_device_get_sync_config(ob_device *device, ob_error **error);
|
||||
|
||||
/**
|
||||
* @brief 设置设备同步配置
|
||||
* @brief 用于配置 单机内的不同 Sensor 的曝光同步功能 和 多机同步功能
|
||||
*
|
||||
* @attention 调用本函数会直接将配置写入设备Flash,设备重启后依然会生效。为了避免影响Flash寿命,不要频繁更新配置。
|
||||
*
|
||||
* @param[in] device 设备对象
|
||||
* @param[out] device_sync_config 设备同步配置
|
||||
* @param[out] error 记录错误信息
|
||||
*/
|
||||
void ob_device_set_sync_config(ob_device *device, ob_device_sync_config device_sync_config, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get device name
|
||||
@@ -1171,6 +1340,68 @@ ob_camera_param ob_camera_param_list_get_param(ob_camera_param_list *param_list,
|
||||
*/
|
||||
void ob_delete_camera_param_list(ob_camera_param_list *param_list, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the depth work mode count that ob_depth_work_mode_list hold
|
||||
* @param[in] work_mode_list data struct contain list of ob_depth_work_mode
|
||||
* @param[out] error Log error messages
|
||||
* @return The total number contain in ob_depth_work_mode_list
|
||||
* \else
|
||||
* @brief 获取深度工作模式列表的元素数量
|
||||
* @param[in] work_mode_list 工作模式列表对象
|
||||
* @param[in] index 下标,从0开始
|
||||
* @return work_mode_list包含的深度模式总数
|
||||
* \endif
|
||||
*
|
||||
*/
|
||||
uint32_t ob_depth_work_mode_list_count(ob_depth_work_mode_list *work_mode_list, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the index target of ob_depth_work_mode from work_mode_list
|
||||
* @param[in] work_mode_list data struct contain list of ob_depth_work_mode
|
||||
* @param[in] index index of target ob_depth_work_mode
|
||||
* @param[out] error Log error messages
|
||||
* @return ob_depth_work_mode
|
||||
* \else
|
||||
* @brief 从深度工作模式列表获取第N个对象
|
||||
* @param[in] work_mode_list 工作模式列表对象
|
||||
* @param[in] index 下标,从0开始
|
||||
* @param[out] error 记录错误信息
|
||||
* @return 深度工作模式对象
|
||||
* \endif
|
||||
*
|
||||
*/
|
||||
ob_depth_work_mode ob_depth_work_mode_list_get_item(ob_depth_work_mode_list *work_mode_list, uint32_t index, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Free resource of ob_depth_work_mode_list
|
||||
* @param[in] work_mode_list data struct contain list of ob_depth_work_mode
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 删除深度工作模式列表对象,释放资源
|
||||
* @param[in] work_mode_list 工作模式列表对象
|
||||
* @param[out] error 记录错误信息
|
||||
* \endif
|
||||
*
|
||||
*/
|
||||
void ob_delete_depth_work_mode_list(ob_depth_work_mode_list *work_mode_list, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Free resource of data_bundle which come from OrbbecSDK's API
|
||||
* @param data_bundle Data bundle
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 删除ob_data_bundle对象,释放资源;
|
||||
* 注意:只能释放OrbbecSDK库返回的ob_data_bundle对象,非OrbbecSDK构建的对象不能调用该接口,否则会造成意想不到的错误
|
||||
* @param[in] data_bundle 数据集
|
||||
* @param[out] error 记录错误信息
|
||||
* \endif
|
||||
*/
|
||||
void ob_delete_data_bundle(ob_data_bundle *data_bundle, ob_error **error);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -84,12 +84,18 @@ void ob_pointcloud_filter_set_frame_align_state(ob_filter *filter, bool state, o
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set point cloud position data scale ratio
|
||||
* @param[in] filter pointcloud_filter object
|
||||
* @param[in] scale scale ratio
|
||||
* @brief Set the point cloud data scaling factor
|
||||
* @attention Calling this function to set the scale will change the point coordinate scaling factor of the output point cloud frame: posScale = posScale /
|
||||
* scale.The point coordinate scaling factor for the output point cloud frame can be obtained via @ref ob_points_frame_get_position_value_scale function
|
||||
* @param[in] filter object
|
||||
* @param[in] scale Set the point cloud coordinate data zoom factor
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 设置点云数据缩放比例
|
||||
*
|
||||
* @attention 调用该函数设置缩放比例会改变输出点云帧的点坐标缩放系数:posScale = posScale / scale;
|
||||
* 输出点云帧的点坐标缩放系数可通过 @ref ob_points_frame_get_position_value_scale 函数获取
|
||||
*
|
||||
* @param[in] filter pointcloud_filter对象
|
||||
* @param[in] scale 设置点云坐标数据缩放比例
|
||||
* @param[out] error 记录错误信息
|
||||
@@ -100,8 +106,8 @@ void ob_pointcloud_filter_set_position_data_scale(ob_filter *filter, float scale
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set point cloud color data normalization
|
||||
* @param[in] filter pointcloud_filter object
|
||||
* @param[in] state Whether to normalize
|
||||
* @param[in] filter object
|
||||
* @param[in] state Sets whether the point cloud color data is normalized
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 设置点云颜色数据归一化
|
||||
@@ -146,6 +152,60 @@ ob_filter *ob_create_format_convert_filter(ob_error **error);
|
||||
*/
|
||||
void ob_format_convert_filter_set_format(ob_filter *filter, ob_convert_format type, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Create compression Filter
|
||||
*
|
||||
* @param[out] error Log error messages
|
||||
*
|
||||
* @return filter depth_filter object
|
||||
* \else
|
||||
* @brief 创建compression Filter
|
||||
*
|
||||
* @param[out] error 记录错误信息
|
||||
*
|
||||
* @return filter depth_filter 对象
|
||||
* \endif
|
||||
*/
|
||||
ob_filter *ob_create_compression_filter(ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set compression parameters
|
||||
*
|
||||
* @param[in] filter compression_filter object
|
||||
* @param[in] mode Compression mode OB_COMPRESSION_LOSSLESS or OB_COMPRESSION_LOSSY
|
||||
* @param[in] params Compression params, struct ob_compression_params, when mode is OB_COMPRESSION_LOSSLESS, params is NULL
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 设置压缩类型
|
||||
*
|
||||
* @param[in] filter compression_filter对象
|
||||
* @param[in] mode 压缩模式 OB_COMPRESSION_LOSSLESS or OB_COMPRESSION_LOSSY
|
||||
* @param[in] params 压缩参数,结构体 ob_compression_params,当mode为OB_COMPRESSION_LOSSLESS时,params为NULL
|
||||
* @param[out] error 记录错误信息
|
||||
* \endif
|
||||
*/
|
||||
void ob_compression_filter_set_compression_params(ob_filter *filter, ob_compression_mode mode, void *params, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Create decompression Filter
|
||||
*
|
||||
* @param[out] error Log error messages
|
||||
*
|
||||
* @return filter decompression Filter object
|
||||
* \else
|
||||
* @brief 创建decompressionr Filter
|
||||
*
|
||||
* @param[out] error 记录错误信息
|
||||
*
|
||||
* @return filter decompression Filter 对象
|
||||
* \endif
|
||||
*/
|
||||
|
||||
ob_filter *ob_create_decompression_filter(ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Filter reset, cache clear, state reset. If the asynchronous interface is used, the processing thread will also be stopped and the pending cache
|
||||
@@ -234,4 +294,4 @@ void ob_delete_filter(ob_filter *filter, ob_error **error);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -241,27 +241,53 @@ uint32_t ob_video_frame_metadata_size(ob_frame *frame, ob_error **error);
|
||||
*/
|
||||
uint8_t ob_video_frame_pixel_available_bit_size(ob_frame *frame, ob_error **error);
|
||||
|
||||
/* @brief 查询IR frame的最原始数据来源(即使回放视频,其原始的数据源也是sensor)
|
||||
* @param[in] frame 视频帧对象
|
||||
* @param[out] error 记录错误信息
|
||||
* @return uint8_t 返回
|
||||
* \endif
|
||||
*/
|
||||
ob_sensor_type ob_ir_frame_get_source_sensor_type(ob_frame *frame, ob_error **ob_error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the value scale of the depth frame, the unit is mm/step,
|
||||
* such as valueScale=0.1, and a certain coordinate pixel value is pixelValue=10000,
|
||||
* then the depth value = pixelValue*valueScale = 10000*0.1=1000mm。
|
||||
* @brief Get the value scale of the depth frame. The pixel value of depth frame is multiplied by the scale to give a depth value in millimeter.
|
||||
* such as valueScale=0.1, and a certain coordinate pixel value is pixelValue=10000, then the depth value = pixelValue*valueScale = 10000*0.1=1000mm。
|
||||
*
|
||||
* @param[in] frame Frame object
|
||||
* @param[out] error Log error messages
|
||||
* @return float value scale
|
||||
* \else
|
||||
* @brief 获取深度帧的值刻度,单位为 mm/step,
|
||||
* 如valueScale=0.1, 某坐标像素值为pixelValue=10000,
|
||||
* @brief 获取深度帧的值缩放系数,深度像素值乘以缩放系数后,可以得到单位为毫米的深度值; 如valueScale=0.1, 某坐标像素值为pixelValue=10000,
|
||||
* 则表示深度值value = pixelValue*valueScale = 10000*0.1=1000mm。
|
||||
*
|
||||
* @param[in] frame 帧对象
|
||||
* @param[out] error 记录错误信息
|
||||
* @return float 值刻度
|
||||
* @return float 缩放系数
|
||||
* \endif
|
||||
*/
|
||||
float ob_depth_frame_get_value_scale(ob_frame *frame, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the point position value scale of the points frame. the point position value of points frame is multiplied by the scale to give a position value
|
||||
* in millimeter. such as scale=0.1, The x-coordinate value of a point is x = 10000, which means that the actual x-coordinate value = x*scale = 10000*0.1 =
|
||||
* 1000mm.
|
||||
*
|
||||
* @param[in] frame Frame object
|
||||
* @param[out] error Log error messages
|
||||
* @return float position value scale
|
||||
* \else
|
||||
* @brief 获取点云帧的点坐标值缩放系数,点坐标值乘以缩放系数后,可以得到单位为毫米的坐标值; 如scale=0.1, 某个点的x坐标值为x=10000,
|
||||
* 则表示实际x坐标value = x*scale = 10000*0.1=1000mm。
|
||||
*
|
||||
* @param[in] frame 点云帧对象
|
||||
* @param[out] error 记录错误信息
|
||||
* @return float 缩放系数
|
||||
* \endif
|
||||
*/
|
||||
float ob_points_frame_get_position_value_scale(ob_frame *frame, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Delete frame
|
||||
@@ -362,6 +388,11 @@ ob_frame *ob_frameset_ir_frame(ob_frame *frameset, ob_error **error);
|
||||
*/
|
||||
ob_frame *ob_frameset_points_frame(ob_frame *frameset, ob_error **error);
|
||||
|
||||
/**
|
||||
* 获取指定类型的frame
|
||||
*/
|
||||
ob_frame *ob_frameset_get_frame(ob_frame *frameset, ob_frame_type frame_type, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get accelerometer frame data
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -366,7 +366,7 @@ ob_rect ob_get_d2c_valid_area(ob_pipeline *pipeline, uint32_t distance, ob_error
|
||||
* @return ob_rect 返回在工作距离下D2C后有效的区域信息
|
||||
* \endif
|
||||
*/
|
||||
ob_rect ob_get_d2c_range_valid_area(ob_pipeline *pipeline, uint32_t minimum_distance,uint32_t maximum_distance, ob_error **error);
|
||||
ob_rect ob_get_d2c_range_valid_area(ob_pipeline *pipeline, uint32_t minimum_distance, uint32_t maximum_distance, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
@@ -398,6 +398,7 @@ void ob_pipeline_start_record(ob_pipeline *pipeline, const char *file_name, ob_e
|
||||
* @param[out] error 记录错误信息
|
||||
* \endif
|
||||
*/
|
||||
|
||||
void ob_pipeline_stop_record(ob_pipeline *pipeline, ob_error **error);
|
||||
|
||||
/**
|
||||
@@ -511,13 +512,12 @@ void ob_config_disable_all_stream(ob_config *config, ob_error **error);
|
||||
*/
|
||||
void ob_config_set_align_mode(ob_config *config, ob_align_mode mode, ob_error **error);
|
||||
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Whether scale depth frame after D2C
|
||||
* @brief Whether the depth needs to be scaled after setting D2C
|
||||
*
|
||||
* @param[in] config config object
|
||||
* @param[in] enable Scale or not
|
||||
* @param[in] enable Whether scaling is required
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 设置D2C后是否需要缩放深度
|
||||
@@ -527,15 +527,17 @@ void ob_config_set_align_mode(ob_config *config, ob_align_mode mode, ob_error **
|
||||
* @param[out] error 记录错误信息
|
||||
* \endif
|
||||
*/
|
||||
void ob_config_set_depth_scale_require(ob_config *config,bool enable,ob_error **error);
|
||||
void ob_config_set_depth_scale_require(ob_config *config, bool enable, ob_error **error);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief
|
||||
* @brief Set the D2C target resolution, which is applicable to cases where the Color stream is not enabled using the OrbbecSDK and the depth needs to be D2C
|
||||
* Note: When you use OrbbecSDK to enable the Color stream, you also use this interface to set the D2C target resolution. The configuration of the enabled Color
|
||||
* stream is preferred for D2C
|
||||
*
|
||||
* @param[in] config config object
|
||||
* @param[in] d2c_target_width D2C target width
|
||||
* @param[in] d2c_target_height D2C target height
|
||||
* @param[in] d2c_target_width The D2C target has a wide resolution
|
||||
* @param[in] d2c_target_height The D2C targets has a high resolution
|
||||
* @param[out] error Log error messages
|
||||
* \else
|
||||
* @brief 设置D2C目标分辨率,适用于未使用OrbbecSDK开启Color流,且需要对深度进行D2C的情况
|
||||
@@ -547,8 +549,8 @@ void ob_config_set_depth_scale_require(ob_config *config,bool enable,ob_error **
|
||||
* @param[out] error 记录错误信息
|
||||
* \endif
|
||||
*/
|
||||
void ob_config_set_d2c_target_resolution(ob_config *config,uint32_t d2c_target_width,uint32_t d2c_target_height,ob_error **error);
|
||||
void ob_config_set_d2c_target_resolution(ob_config *config, uint32_t d2c_target_width, uint32_t d2c_target_height, ob_error **error);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
* \endif
|
||||
*/
|
||||
|
||||
#ifdef OB_SENSOR_SDK_DEVELOPER
|
||||
#include "libobsensor/internal/InternalProperty.h"
|
||||
#else // not define OB_SENSOR_SDK_DEVELOPER
|
||||
#ifndef _OB_PROPERTY_H_
|
||||
#define _OB_PROPERTY_H_
|
||||
|
||||
@@ -78,9 +81,26 @@ typedef enum {
|
||||
91, /**< \if English D2C preprocessing switch (such as RGB cropping), 0: off, 1: on \else D2C前处理开关(如RGB裁剪),0:关闭,1:打开 \endif */
|
||||
OB_PROP_RGB_CUSTOM_CROP_BOOL = 94, /**< \if English Custom RGB cropping switch, 0 is off, 1 is on custom cropping, and the ROI cropping area is issued \else
|
||||
自定义RGB裁剪开关,0为关闭,1为开启自定义裁剪,下发ROI裁剪区域\endif */
|
||||
OB_PROP_DEVICE_WORK_MODE_INT = 95, /**< \if English Device operating mode (power consumption) \else 设备工作模式(功耗) \endif */
|
||||
OB_PROP_DEVICE_COMMUNICATION_TYPE_INT = 97, /**< 设备通信方式 0: USB; 1: Ethernet(RTSP)*/
|
||||
OB_PROP_SWITCH_IR_MODE_INT = 98, /**< 切换IR模式,0为主动IR模式,1为被动IR模式*/
|
||||
|
||||
OB_PROP_DEVICE_WORK_MODE_INT = 95, /**< \if English Device operating mode (power consumption) \else 设备工作模式(功耗) \endif */
|
||||
OB_PROP_DEVICE_COMMUNICATION_TYPE_INT = 97, /**< 设备通信方式 0: USB; 1: Ethernet(RTSP)*/
|
||||
OB_PROP_SWITCH_IR_MODE_INT = 98, /**< 切换IR模式,0为主动IR模式,1为被动IR模式*/
|
||||
OB_PROP_LASER_ENERGY_LEVEL_INT = 99, /**< 激光能量层级 */
|
||||
OB_PROP_TIMER_RESET_SIGNAL_BOOL = 104, /**< 触发设备时间归零 */
|
||||
OB_PROP_TIMER_RESET_TRIGGLE_OUT_ENABLE_BOOL = 105, /**< 向外发送时间归零信号开关, true:打开, false: 关闭; 默认为true */
|
||||
OB_PROP_TIMER_RESET_DELAY_US_INT = 106, /**< 设置硬件时间归零延迟时间, 单位: 微妙 */
|
||||
OB_PROP_CAPTURE_IMAGE_SIGNAL_BOOL = 107, /**< 软触发信号, 触发抓拍图片 */
|
||||
OB_PROP_IR_RIGHT_MIRROR_BOOL = 112, /**< 右IR的镜像 */
|
||||
OB_PROP_CAPTURE_IMAGE_FRAME_NUMBER_INT = 113, /** 单次软触发抓拍的帧数, 范围:[1, 255] */
|
||||
OB_PROP_IR_RIGHT_FLIP_BOOL = 114, /**< 右IR的翻转, true:翻转,false:不翻转;默认为false */
|
||||
OB_PROP_COLOR_ROTATE_INT = 115, /**< 彩色旋转, 翻转角度范围{0, 90, 180, 270}, 默认为0 */
|
||||
OB_PROP_IR_ROTATE_INT = 116, /**< IR旋转, 翻转角度范围{0, 90, 180, 270}, 默认为0 */
|
||||
OB_PROP_IR_RIGHT_ROTATE_INT = 117, /**< 右IR旋转, 翻转角度范围{0, 90, 180, 270}, 默认为0 */
|
||||
OB_PROP_DEPTH_ROTATE_INT = 118, /**< 深度旋转, 翻转角度范围{0, 90, 180, 270}, 默认为0 */
|
||||
OB_PROP_LASER_HW_ENERGY_LEVEL_INT =
|
||||
119, /**< 查询激光硬件的实际能量层级, OB_PROP_LASER_ENERGY_LEVEL_INT(99)指令用于设置能级,该指令用于查询设置后硬件实际能级 */
|
||||
OB_PROP_USB_POWER_STATE_INT = 121, /**< USB供电状态,状态值枚举: OBUSBPowerState */
|
||||
OB_PROP_DC_POWER_STATE_INT = 122, /**< DC供电状态,状态值枚举: OBDCPowerState */
|
||||
|
||||
OB_STRUCT_BASELINE_CALIBRATION_PARAM = 1002, /**< \if English Baseline calibration parameters \else 基线标定参数 \endif */
|
||||
OB_STRUCT_DEVICE_TEMPERATURE = 1003, /**< \if English Device temperature information \else 设备温度信息 \endif */
|
||||
@@ -89,8 +109,10 @@ typedef enum {
|
||||
OB_STRUCT_DEVICE_TIME = 1037, /**< \if English get/set device time \else 获取/设置设备时间 \endif */
|
||||
OB_STRUCT_MULTI_DEVICE_SYNC_CONFIG =
|
||||
1038, /**< \if English Multi-device synchronization mode and parameter configuration \else 多设备同步模式和参数配置 \endif */
|
||||
OB_STRUCT_RGB_CROP_ROI = 1040, /**< \if English RGB cropping ROI \else RGB裁剪ROI \endif */
|
||||
OB_STRUCT_DEVICE_IP_ADDR_CONFIG = 1041, /**< 设备ip地址配置 */
|
||||
OB_STRUCT_RGB_CROP_ROI = 1040, /**< \if English RGB cropping ROI \else RGB裁剪ROI \endif */
|
||||
OB_STRUCT_DEVICE_IP_ADDR_CONFIG = 1041, /**< 设备ip地址配置 */
|
||||
OB_STRUCT_CURRENT_DEPTH_ALG_MODE = 1043, /**< 当前的相机深度模式 */
|
||||
OB_STRUCT_DEPTH_PRECISION_SUPPORT_LIST = 1045, /**< 深度精度等级列表,返回uin16_t数组,对应精度等级的枚举定义 */
|
||||
|
||||
OB_PROP_COLOR_AUTO_EXPOSURE_BOOL = 2000, /**< \if English Color camera auto exposure \else 彩色相机自动曝光 \endif */
|
||||
OB_PROP_COLOR_EXPOSURE_INT = 2001, /**< \if English Color camera exposure adjustment \else 彩色相机曝光调节 \endif */
|
||||
@@ -119,17 +141,21 @@ typedef enum {
|
||||
红外相机曝光调节(某些型号设备下会同步设置深度相机) \endif */
|
||||
OB_PROP_IR_GAIN_INT = 2027, /**< \if English Infrared camera gain adjustment (the depth camera will be set synchronously under some models of devices) \else
|
||||
红外相机增益调节(某些型号设备下会同步设置深度相机) \endif */
|
||||
OB_PROP_IR_SWITCH_INT = 2028,
|
||||
/**< 双目红外相机左右IR切换 */ // todo: id有冲突@千手修罗
|
||||
OB_PROP_IR_CHANNEL_DATA_SOURCE_INT = 2028, /**< \if English Select Infrared camera data source channel. If not support throw exception. 0 : IR stream from IR Left sensor; 1 : IR stream from IR Left sensor; \else 读写IR通道的输出目标sensor,不支持时返回错误。0: 左侧IR sensor,1: 右侧IR sensor; \endif */
|
||||
OB_PROP_DEPTH_RM_FILTER_BOOL = 2029, /**< 深度效果去畸变, true:打开,false:关闭, 与D2C功能互斥。软硬件D2C开启时,不能使用mask功能 */
|
||||
|
||||
OB_PROP_SDK_DISPARITY_TO_DEPTH_BOOL = 3004, /**< 视差转深度 */
|
||||
OB_PROP_SDK_DEPTH_FRAME_UNPACK_BOOL = 3007, /**< Depth数据解包功能开关(每次开流都会默认打开,支持RLE/Y10/Y11/Y12/Y14格式) */
|
||||
OB_PROP_SDK_IR_FRAME_UNPACK_BOOL = 3008, /**< Ir数据解包功能开关(每次开流都会默认打开,支持RLE/Y10/Y11/Y12/Y14格式) */
|
||||
|
||||
OB_RAW_DATA_CAMERA_CALIB_JSON_FILE = 4029, /**< 从设备端读取的标定Json文件(Femto Mega, read only)*/
|
||||
OB_RAW_DATA_D2C_ROT_LUT_FILE = 4030, /**< D2C初始化表文件(Femto Mega)*/
|
||||
OB_STRUCT_DEBUG_SENSOR_EXPOSURE_TIME = 5504, /**< \if English LDP status \else 曝光时间读写 \endif */
|
||||
|
||||
OB_PROP_SDK_DEPTH_FRAME_UNPACK_BOOL =
|
||||
3007, /**< \if English Depth data unpacking function switch (each open stream will be turned on by default, support RLE/Y10/Y11/Y12/Y14 format) \else
|
||||
Depth数据解包功能开关(每次开流都会默认打开,支持RLE/Y10/Y11/Y12/Y14格式) \endif */
|
||||
OB_PROP_SDK_IR_FRAME_UNPACK_BOOL =
|
||||
3008, /**< \if English IR data unpacking function switch (each current will be turned on by default, support RLE/Y10/Y11/Y12/Y14 format) \else
|
||||
Ir数据解包功能开关(每次开流都会默认打开,支持RLE/Y10/Y11/Y12/Y14格式) \endif */
|
||||
OB_PROP_SDK_ACCEL_FRAME_TRANSFORMED_BOOL = 3009, /**< Accel数据转换功能开关(默认打开) */
|
||||
OB_PROP_SDK_GYRO_FRAME_TRANSFORMED_BOOL = 3010, /**< Gyro数据转换功能开关(默认打开) */
|
||||
OB_PROP_SDK_IR_LEFT_FRAME_UNPACK_BOOL = 3011, /**< [左]Ir数据解包功能开关(每次开流都会默认打开,支持RLE/Y10/Y11/Y12/Y14格式) */
|
||||
OB_PROP_SDK_IR_RIGHT_FRAME_UNPACK_BOOL = 3012, /**< [右]Ir数据解包功能开关(每次开流都会默认打开,支持RLE/Y10/Y11/Y12/Y14格式) */
|
||||
OB_RAW_DATA_CAMERA_CALIB_JSON_FILE = 4029, /**< 从设备端读取的标定Json文件(Femto Mega, read only)*/
|
||||
} OBPropertyID,
|
||||
ob_property_id;
|
||||
|
||||
@@ -167,3 +193,4 @@ typedef struct OBPropertyItem {
|
||||
#endif
|
||||
|
||||
#endif // _OB_PROPERTY_H_
|
||||
#endif // OB_SENSOR_SDK_DEVELOPER
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
struct DeviceImpl;
|
||||
struct DeviceInfoImpl;
|
||||
@@ -27,6 +28,7 @@ class Context;
|
||||
class DeviceInfo;
|
||||
class Sensor;
|
||||
class CameraParamList;
|
||||
class OBDepthWorkModeList;
|
||||
|
||||
class OB_EXTENSION_API Device {
|
||||
private:
|
||||
@@ -407,6 +409,66 @@ public:
|
||||
*/
|
||||
void getStructuredData(OBPropertyID propertyId, void *data, uint32_t *dataSize);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get structured data type of device property
|
||||
*
|
||||
* @param propertyId Property id
|
||||
* @param dataBundle Target data
|
||||
* @param callback Callback of setting
|
||||
* \else
|
||||
* @brief Set the Structured Data Ext object
|
||||
*
|
||||
* @param propertyId 属性id
|
||||
* @param dataBundle 设置的目标数据
|
||||
* @param callback 设置数据回调
|
||||
* \endif
|
||||
*/
|
||||
void setStructuredDataExt(OBPropertyID propertyId, std::shared_ptr<OBDataBundle> dataBundle, SetDataCallback callback);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get structured data type of device property
|
||||
*
|
||||
* @param propertyId Property id
|
||||
* @return Data bundle
|
||||
* \else
|
||||
* @brief 获取structured data类型的数据
|
||||
*
|
||||
* @param propertyId 属性id
|
||||
* @return std::shared_ptr<OBDataBundle> 数据集
|
||||
* \endif
|
||||
*/
|
||||
std::shared_ptr<OBDataBundle> getStructuredDataExt(OBPropertyID propertyId);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the property protocol version
|
||||
*
|
||||
* @return OBProtocolVersion
|
||||
* \else
|
||||
* @brief 获取设备的控制命令协议版本
|
||||
*
|
||||
* @return OBProtocolVersion
|
||||
* \endif
|
||||
*/
|
||||
OBProtocolVersion getProtocolVersion();
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get cmdVersion of property
|
||||
*
|
||||
* @param propertyId Property id
|
||||
* @return OBCmdVersion
|
||||
* \else
|
||||
* @brief 获取控制命令的版本号
|
||||
*
|
||||
* @param propertyId 属性id
|
||||
* @return OBCmdVersion
|
||||
* \endif
|
||||
*/
|
||||
OBCmdVersion getCmdVersion(OBPropertyID propertyId);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get number of devices supported property
|
||||
@@ -563,6 +625,61 @@ public:
|
||||
*/
|
||||
std::shared_ptr<CameraParamList> getCalibrationCameraParamList();
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get current depth work mode
|
||||
*
|
||||
* @return ob_depth_work_mode Current depth work mode
|
||||
* \else
|
||||
* @brief 查询当前的相机深度模式
|
||||
*
|
||||
* @return 返回当前的相机深度模式
|
||||
* \endif
|
||||
*/
|
||||
OBDepthWorkMode getCurrentDepthWorkMode();
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Switch depth work mode by OBDepthWorkMode. Prefer invoke switchDepthWorkMode(const char *modeName) to switch depth mode
|
||||
* when known the complete name of depth work mode.
|
||||
* @param[in] workMode Depth work mode come from ob_depth_work_mode_list which return by ob_device_get_depth_work_mode_list
|
||||
* \else
|
||||
* @brief 切换相机深度模式(根据深度工作模式对象),如果知道设备支持的深度工作模式名称,那么推荐用switchDepthWorkMode(const char *modeName)
|
||||
*
|
||||
* @param workMode 要切换的相机深度模式
|
||||
*
|
||||
* @return 返回指令是否切换成功
|
||||
* \endif
|
||||
*/
|
||||
OBStatus switchDepthWorkMode(const OBDepthWorkMode &workMode);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Switch depth work mode by work mode name.
|
||||
*
|
||||
* @param[in] mode name Depth work mode name which equals to ob_depth_work_mode.name
|
||||
* \else
|
||||
* @brief 切换相机深度模式(根据深度工作模式名称)
|
||||
*
|
||||
* @param workMode
|
||||
*
|
||||
* @return ob_status 设置设置结果,OB_STATUS_OK成功,其他:设置失败
|
||||
* \endif
|
||||
*/
|
||||
OBStatus switchDepthWorkMode(const char *modeName);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Request support depth work mode list
|
||||
* @return OBDepthWorkModeList list of ob_depth_work_mode
|
||||
* \else
|
||||
* @brief 查询相机深度模式列表
|
||||
*
|
||||
* @return 相机深度模式列表
|
||||
* \endif
|
||||
*/
|
||||
std::shared_ptr<OBDepthWorkModeList> getDepthWorkModeList();
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Device restart
|
||||
@@ -576,6 +693,24 @@ public:
|
||||
*/
|
||||
void reboot();
|
||||
|
||||
/**
|
||||
* @brief 获取当前设备同步配置
|
||||
* @brief 设备同步:包括单机内的不同 Sensor 的曝光同步功能 和 多机同步功能
|
||||
*
|
||||
* @return OBDeviceSyncConfig 返回设备同步配置
|
||||
*/
|
||||
OBDeviceSyncConfig getSyncConfig();
|
||||
|
||||
/**
|
||||
* @brief 设置设备同步配置
|
||||
* @brief 用于配置 单机内的不同 Sensor 的曝光同步功能 和 多机同步功能
|
||||
*
|
||||
* @attention 调用本函数会直接将配置写入设备Flash,设备重启后依然会生效。为了避免影响Flash寿命,不要频繁更新配置。
|
||||
*
|
||||
* @param[out] deviceSyncConfig 设备同步配置
|
||||
*/
|
||||
void setSyncConfig(const OBDeviceSyncConfig &deviceSyncConfig);
|
||||
|
||||
friend class Pipeline;
|
||||
friend class Recorder;
|
||||
};
|
||||
@@ -934,4 +1069,79 @@ public:
|
||||
OBCameraParam getCameraParam(uint32_t index);
|
||||
};
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Type contain list of OBDepthWorkMode
|
||||
* \else
|
||||
* @brief 相机深度模式列表
|
||||
* \endif
|
||||
*
|
||||
*/
|
||||
class OB_EXTENSION_API OBDepthWorkModeList {
|
||||
private:
|
||||
std::unique_ptr<OBDepthWorkModeListImpl> impl_;
|
||||
|
||||
public:
|
||||
OBDepthWorkModeList(std::unique_ptr<OBDepthWorkModeListImpl> impl_);
|
||||
~OBDepthWorkModeList();
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the count of OBDepthWorkMode
|
||||
*
|
||||
* @return Count of OBDepthWorkMode
|
||||
* \else
|
||||
* @brief 获取相机深度模式的数量
|
||||
*
|
||||
* @return 列表中的相机深度模式数量
|
||||
* \endif
|
||||
*/
|
||||
uint32_t count();
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get OBDepthWorkMode at index in OBDepthWorkModeList
|
||||
*
|
||||
* @param[in] index Target OBDepthWorkMode's index
|
||||
*
|
||||
* @return OBDepthWorkMode at index
|
||||
* \else
|
||||
* @brief 根据下标获取相机深度模式
|
||||
*
|
||||
* @param index 对应模式列表的下标
|
||||
* @return 相机深度模式
|
||||
* \endif
|
||||
*/
|
||||
OBDepthWorkMode getOBDepthWorkMode(uint32_t index);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get depth work mode name at index
|
||||
*
|
||||
* @return Depth work mode name
|
||||
* \else
|
||||
* @brief 模式名称
|
||||
*
|
||||
* @param index 对应模式列表的下标
|
||||
* @return 模式名称
|
||||
* \endif
|
||||
*/
|
||||
std::string getName(uint32_t index);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get OBDepthWorkMode at index in OBDepthWorkModeList
|
||||
*
|
||||
* @param[in] index Target OBDepthWorkMode's index
|
||||
*
|
||||
* @return OBDepthWorkMode at index
|
||||
* \else
|
||||
* @brief 运算符重载,根据下标获取相机深度模式
|
||||
*
|
||||
* @param index 对应模式列表的下标
|
||||
* @return 相机深度模式
|
||||
* \endif
|
||||
*/
|
||||
OBDepthWorkMode operator[](uint32_t index);
|
||||
};
|
||||
|
||||
} // namespace ob
|
||||
|
||||
@@ -123,28 +123,34 @@ public:
|
||||
void setFrameAlignState(bool state);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set point cloud position data scale ratio
|
||||
* \if English
|
||||
* @brief Set the point cloud coordinate data zoom factor
|
||||
*
|
||||
* @param scale scale ratio
|
||||
* \else
|
||||
* @attention Calling this function to set the scale will change the point coordinate scaling factor of the output point cloud frame: posScale = posScale /
|
||||
* scale.The point coordinate scaling factor for the output point cloud frame can be obtained via @ref PointsFrame::getPositionValueScale function
|
||||
*
|
||||
* @param scale Zoom factor
|
||||
* \else
|
||||
* @brief 设置点云坐标数据缩放比例
|
||||
*
|
||||
* @attention 调用该函数设置缩放比例会改变输出点云帧的点坐标缩放系数:posScale = posScale / scale;
|
||||
* 输出点云帧的点坐标缩放系数可通过 @ref PointsFrame::getPositionValueScale 函数获取
|
||||
*
|
||||
* @param scale 缩放比例
|
||||
* \endif
|
||||
* \endif
|
||||
*/
|
||||
void setPositionDataScaled(float scale);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set point cloud color data normalization
|
||||
* \if English
|
||||
* @brief Set point cloud color data normalization
|
||||
*
|
||||
* @param state Whether to normalize
|
||||
* \else
|
||||
* @param state Whether normalization is required
|
||||
* \else
|
||||
* @brief 设置点云颜色数据归一化
|
||||
*
|
||||
* @param state 是否需要归一化
|
||||
* \endif
|
||||
* \endif
|
||||
*/
|
||||
void setColorDataNormalization(bool state);
|
||||
};
|
||||
@@ -165,4 +171,29 @@ public:
|
||||
*/
|
||||
void setFormatConvertType(OBConvertFormat type);
|
||||
};
|
||||
} // namespace ob
|
||||
|
||||
class OB_EXTENSION_API CompressionFilter : public Filter {
|
||||
public:
|
||||
CompressionFilter();
|
||||
/**
|
||||
* \if English
|
||||
* @brief Set compression params
|
||||
*
|
||||
* @param mode Compression mode OB_COMPRESSION_LOSSLESS or OB_COMPRESSION_LOSSY
|
||||
* @param params Compression params, when mode is OB_COMPRESSION_LOSSLESS, params is NULL
|
||||
* \else
|
||||
* @brief 设置压缩参数
|
||||
*
|
||||
* @param mode 压缩模式 OB_COMPRESSION_LOSSLESS or OB_COMPRESSION_LOSSY
|
||||
* @param params 压缩参数, 当mode为OB_COMPRESSION_LOSSLESS时,params为NULL
|
||||
* \endif
|
||||
*/
|
||||
void setCompressionParams(OBCompressionMode mode, void *params);
|
||||
};
|
||||
|
||||
class OB_EXTENSION_API DecompressionFilter : public Filter {
|
||||
public:
|
||||
DecompressionFilter();
|
||||
};
|
||||
|
||||
} // namespace ob
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "Types.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <iostream>
|
||||
#include <typeinfo>
|
||||
|
||||
/**
|
||||
@@ -26,7 +27,10 @@
|
||||
* +--+------+---------+
|
||||
* | | |
|
||||
* ColorFrame DepthFrame IRFrame
|
||||
*
|
||||
* |
|
||||
* +-----+-----+
|
||||
* | |
|
||||
* IRLeftFrame IRRightFrame
|
||||
*/
|
||||
|
||||
struct FrameImpl;
|
||||
@@ -280,17 +284,15 @@ public:
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the value scale of the depth frame, the unit is mm/step,
|
||||
* such as valueScale=0.1, and a certain coordinate pixel value is pixelValue=10000,
|
||||
* then the depth value value = pixelValue*valueScale = 10000*0.1=1000mm.
|
||||
* @brief Get the value scale of the depth frame. The pixel value of depth frame is multiplied by the scale to give a depth value in millimeter.
|
||||
* such as valueScale=0.1, and a certain coordinate pixel value is pixelValue=10000, then the depth value = pixelValue*valueScale = 10000*0.1=1000mm。
|
||||
*
|
||||
* @return float
|
||||
* @return float scale
|
||||
* \else
|
||||
* @brief 获取深度帧的值刻度,单位为 mm/step,
|
||||
* 如valueScale=0.1, 某坐标像素值为pixelValue=10000,
|
||||
* @brief 获取深度帧的值缩放系数,深度像素值乘以缩放系数后,可以得到单位为毫米的深度值; 如valueScale=0.1, 某坐标像素值为pixelValue=10000,
|
||||
* 则表示深度值value = pixelValue*valueScale = 10000*0.1=1000mm。
|
||||
*
|
||||
* @return float
|
||||
* @return float 缩放系数
|
||||
* \endif
|
||||
*/
|
||||
float getValueScale();
|
||||
@@ -300,12 +302,33 @@ class OB_EXTENSION_API IRFrame : public VideoFrame {
|
||||
public:
|
||||
IRFrame(Frame &frame);
|
||||
virtual ~IRFrame() noexcept {};
|
||||
|
||||
public:
|
||||
OBSensorType getDataSource();
|
||||
};
|
||||
|
||||
class OB_EXTENSION_API PointsFrame : public Frame {
|
||||
public:
|
||||
PointsFrame(Frame &frame);
|
||||
~PointsFrame() noexcept {};
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the point position value scale of the points frame. the point position value of points frame is multiplied by the scale to give a position
|
||||
* value in millimeter. such as scale=0.1, The x-coordinate value of a point is x = 10000, which means that the actual x-coordinate value = x*scale =
|
||||
* 10000*0.1 = 1000mm.
|
||||
*
|
||||
* @param[in] frame Frame object
|
||||
* @param[out] error Log error messages
|
||||
* @return float position value scale
|
||||
* \else
|
||||
* @brief 获取点云帧的点坐标值缩放系数,点坐标值乘以缩放系数后,可以得到单位为毫米的坐标值; 如scale=0.1, 某个点的x坐标值为x=10000,
|
||||
* 则表示实际x坐标value = x*scale = 10000*0.1=1000mm。
|
||||
*
|
||||
* @return float 缩放系数
|
||||
* \endif
|
||||
*/
|
||||
float getPositionValueScale();
|
||||
};
|
||||
|
||||
class OB_EXTENSION_API FrameSet : public Frame {
|
||||
@@ -393,7 +416,7 @@ public:
|
||||
* @return std::shared_ptr<Frame> 返回相应类型的帧
|
||||
* \endif
|
||||
*/
|
||||
std::shared_ptr<Frame> getFrame(OBSensorType sensorType);
|
||||
std::shared_ptr<Frame> getFrame(OBFrameType frameType);
|
||||
|
||||
friend class Pipeline;
|
||||
friend class Filter;
|
||||
@@ -523,6 +546,8 @@ public:
|
||||
|
||||
template <typename T> bool Frame::is() {
|
||||
switch(this->type()) {
|
||||
case OB_FRAME_IR_LEFT: // follow
|
||||
case OB_FRAME_IR_RIGHT: // follow
|
||||
case OB_FRAME_IR:
|
||||
return (typeid(T) == typeid(IRFrame) || typeid(T) == typeid(VideoFrame));
|
||||
case OB_FRAME_DEPTH:
|
||||
@@ -538,6 +563,7 @@ template <typename T> bool Frame::is() {
|
||||
case OB_FRAME_POINTS:
|
||||
return (typeid(T) == typeid(PointsFrame));
|
||||
default:
|
||||
std::cout << "ob::Frame::is() not catch frame type: " << (int)this->type() << std::endl;
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -230,13 +230,13 @@ public:
|
||||
std::shared_ptr<StreamProfileList> getD2CDepthProfileList(std::shared_ptr<StreamProfile> colorProfile, OBAlignMode alignMode);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get valid area between minimum distance and maximum distance after D2C
|
||||
* \if English
|
||||
* @brief Get valid area between minimum distance and maximum distance after D2C
|
||||
*
|
||||
* @param minimumDistance minimum working distance
|
||||
* @param maximumDistance maximum working distance
|
||||
* @return OBRect returns the area information valid after D2C at the working distance
|
||||
* \else
|
||||
* \else
|
||||
* @brief 获取D2C后给定工作范围的有效区域
|
||||
* 如果需要获取指定距离D2C后的ROI区域,将minimum_distance与maximum_distance设置成一样或者将maximum_distance设置成0
|
||||
*
|
||||
@@ -245,7 +245,7 @@ public:
|
||||
* @return OBRect 返回在工作距离下D2C后有效的区域信息
|
||||
* \endif
|
||||
*/
|
||||
OBRect getD2CValidArea(uint32_t minimumDistance,uint32_t maximumDistance = 0);
|
||||
OBRect getD2CValidArea(uint32_t minimumDistance, uint32_t maximumDistance = 0);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
@@ -346,33 +346,34 @@ public:
|
||||
void setAlignMode(OBAlignMode mode);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief Whether scale depth frame after D2C
|
||||
* \if English
|
||||
* @brief Whether the depth needs to be scaled after setting D2C
|
||||
*
|
||||
* @param enable Scale or not
|
||||
* \else
|
||||
* @param enable Whether scaling is required
|
||||
* \else
|
||||
* @brief 设置D2C后是否需要缩放深度
|
||||
*
|
||||
* @param enable 是否需要缩放
|
||||
* \endif
|
||||
* \endif
|
||||
*/
|
||||
void setDepthScaleRequire(bool enable);
|
||||
|
||||
/**
|
||||
* \if English
|
||||
* @brief
|
||||
*
|
||||
* @param d2cTargetWidth D2C target width
|
||||
* @param d2cTargetHeight D2C target height
|
||||
* \else
|
||||
* \if English
|
||||
* @brief Set the D2C target resolution, which is applicable to cases where the Color stream is not enabled using the OrbbecSDK and the depth needs to be
|
||||
* D2C Note: When you use OrbbecSDK to enable the Color stream, you also use this interface to set the D2C target resolution. The configuration of the
|
||||
* enabled Color stream is preferred for D2C.
|
||||
* @param d2cTargetWidth The D2C target has a wide resolution
|
||||
* @param d2cTargetHeight The D2C target has a high resolutio
|
||||
* \else
|
||||
* @brief 设置D2C目标分辨率,适用于未使用OrbbecSDK开启Color流,且需要对深度进行D2C的情况
|
||||
* 注意:当使用OrbbecSDK开启Color流时,同时使用了此接口设置了D2C目标分辨率时。优先使用开启的Color流的配置进行D2C。
|
||||
*
|
||||
* @param d2cTargetWidth D2C目标分辨率宽
|
||||
* @param d2cTargetHeight D2C目标分辨率高
|
||||
* \endif
|
||||
* \endif
|
||||
*/
|
||||
void setD2CTargetResolution(uint32_t d2cTargetWidth,uint32_t d2cTargetHeight);
|
||||
void setD2CTargetResolution(uint32_t d2cTargetWidth, uint32_t d2cTargetHeight);
|
||||
|
||||
friend class Pipeline;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/**
|
||||
* \if English
|
||||
*
|
||||
* @file RecordPlayback.hpp
|
||||
* @brief For recording and playback functions
|
||||
* \else
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "Types.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
struct StreamProfileImpl;
|
||||
@@ -43,7 +44,7 @@ public:
|
||||
* @return OBFormat 返回流的格式
|
||||
* \endif
|
||||
*/
|
||||
OBFormat format();
|
||||
OBFormat format() const;
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get the type of stream
|
||||
@@ -55,7 +56,7 @@ public:
|
||||
* @return OBStreamType 返回流的类型
|
||||
* \endif
|
||||
*/
|
||||
OBStreamType type();
|
||||
OBStreamType type() const;
|
||||
|
||||
/**
|
||||
* \if English
|
||||
@@ -113,7 +114,7 @@ public:
|
||||
* @return uint32_t 返回流的帧率
|
||||
* \endif
|
||||
*/
|
||||
uint32_t fps();
|
||||
uint32_t fps() const;
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get stream width
|
||||
@@ -125,7 +126,7 @@ public:
|
||||
* @return uint32_t 返回流的宽
|
||||
* \endif
|
||||
*/
|
||||
uint32_t width();
|
||||
uint32_t width() const;
|
||||
/**
|
||||
* \if English
|
||||
* @brief Get stream height
|
||||
@@ -137,7 +138,7 @@ public:
|
||||
* @return uint32_t 返回流的高
|
||||
* \endif
|
||||
*/
|
||||
uint32_t height();
|
||||
uint32_t height() const;
|
||||
};
|
||||
|
||||
class OB_EXTENSION_API AccelStreamProfile : public StreamProfile {
|
||||
@@ -156,7 +157,7 @@ public:
|
||||
* @return OBAccelFullScaleRange 返回量程范围值
|
||||
* \endif
|
||||
*/
|
||||
OBAccelFullScaleRange fullScaleRange();
|
||||
OBAccelFullScaleRange fullScaleRange() const;
|
||||
|
||||
/**
|
||||
* \if English
|
||||
@@ -169,7 +170,7 @@ public:
|
||||
* @return OBAccelFullScaleRange 返回采样频率
|
||||
* \endif
|
||||
*/
|
||||
OBAccelSampleRate sampleRate();
|
||||
OBAccelSampleRate sampleRate() const;
|
||||
};
|
||||
|
||||
class OB_EXTENSION_API GyroStreamProfile : public StreamProfile {
|
||||
@@ -188,7 +189,7 @@ public:
|
||||
* @return OBAccelFullScaleRange 返回量程范围值
|
||||
* \endif
|
||||
*/
|
||||
OBGyroFullScaleRange fullScaleRange();
|
||||
OBGyroFullScaleRange fullScaleRange() const;
|
||||
|
||||
/**
|
||||
* \if English
|
||||
@@ -201,13 +202,15 @@ public:
|
||||
* @return OBAccelFullScaleRange 返回采样频率
|
||||
* \endif
|
||||
*/
|
||||
OBGyroSampleRate sampleRate();
|
||||
OBGyroSampleRate sampleRate() const;
|
||||
};
|
||||
|
||||
template <typename T> bool StreamProfile::is() {
|
||||
switch(this->type()) {
|
||||
case OB_STREAM_VIDEO:
|
||||
case OB_STREAM_IR:
|
||||
case OB_STREAM_IR_LEFT:
|
||||
case OB_STREAM_IR_RIGHT:
|
||||
case OB_STREAM_COLOR:
|
||||
case OB_STREAM_DEPTH:
|
||||
return typeid(T) == typeid(VideoStreamProfile);
|
||||
@@ -240,7 +243,7 @@ public:
|
||||
* @return uint32_t 返回StreamProfile的数量
|
||||
* \endif
|
||||
*/
|
||||
uint32_t count();
|
||||
uint32_t count() const;
|
||||
|
||||
/**
|
||||
* \if English
|
||||
@@ -280,4 +283,4 @@ public:
|
||||
const std::shared_ptr<VideoStreamProfile> getVideoStreamProfile(int width = 0, int height = 0, OBFormat format = OB_FORMAT_UNKNOWN, int fps = 0);
|
||||
};
|
||||
|
||||
} // namespace ob
|
||||
} // namespace ob
|
||||
Reference in New Issue
Block a user