zed_interface.h
Go to the documentation of this file.
1 #ifndef __INTERFACE_ZED_H
2 #define __INTERFACE_ZED_H
3 
4 #include "types_c.h"
5 #include <stdbool.h>
6 #include <cuda.h>
7 #include <cuda_runtime.h>
8 
13  //#define DEBUG
14 #ifdef _WIN32
15 #ifdef INTERFACE_NOEXPORT
16 #define INTERFACE_API
17 #else
18 #ifdef INTERFACE_EXPORT
19 #define INTERFACE_API __declspec(dllexport)
20 #else
21 #define INTERFACE_API __declspec(dllimport)
22 #endif
23 #endif
24 #else
25 #define INTERFACE_API
26 #endif
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 
33  INTERFACE_API void sl_free(void* ptr);
34 
38  INTERFACE_API void sl_unload_all_instances();
39 
44  INTERFACE_API void sl_unload_instance(int camera_id);
45 
52  INTERFACE_API bool sl_create_camera(int camera_id);
53 
59  INTERFACE_API bool sl_is_opened(int camera_id);
60 
77  INTERFACE_API int sl_open_camera(int camera_id, struct SL_InitParameters* init_parameters, const unsigned int serial_number, const char* path_svo, const char* ip, int stream_port, int gmsl_port, const char* output_file, const char* opt_settings_path, const char* opencv_calib_path);
78 
88  INTERFACE_API int sl_open_camera_from_camera_id(int camera_id, struct SL_InitParameters* init_parameters, const char* output_file, const char* opt_settings_path, const char* opencv_calib_path);
89 
100  INTERFACE_API int sl_open_camera_from_serial_number(int camera_id, struct SL_InitParameters* init_parameters, const unsigned int serial_number, const char* output_file, const char* opt_settings_path, const char* opencv_calib_path);
101 
112  INTERFACE_API int sl_open_camera_from_svo_file(int camera_id, struct SL_InitParameters* init_parameters, const char* path_svo, const char* output_file, const char* opt_settings_path, const char* opencv_calib_path);
113 
125  INTERFACE_API int sl_open_camera_from_stream(int camera_id, struct SL_InitParameters* init_parameters, const char* ip, int stream_port, const char* output_file, const char* opt_settings_path, const char* opencv_calib_path);
134  INTERFACE_API enum SL_ERROR_CODE sl_start_publishing(int camera_id, struct SL_CommunicationParameters* comm_params);
135 
141  INTERFACE_API enum SL_ERROR_CODE sl_stop_publishing(int camera_id);
142 
149  INTERFACE_API CUcontext sl_get_cuda_context(int camera_id);
150 
158  INTERFACE_API struct SL_InitParameters* sl_get_init_parameters(int camera_id);
159 
167  INTERFACE_API struct SL_RuntimeParameters* sl_get_runtime_parameters(int camera_id);
168 
177 
182  INTERFACE_API void sl_close_camera(int camera_id);
183 
192  INTERFACE_API int sl_set_region_of_interest(int camera_id, void* roi_mask, bool module[SL_MODULE_LAST]);
193 
202  INTERFACE_API int sl_get_region_of_interest(int camera_id, void* roi_mask, int width, int height, enum SL_MODULE module);
218  INTERFACE_API int sl_start_region_of_interest_auto_detection(int camera_id, struct SL_RegionOfInterestParameters* roi_param);
232  INTERFACE_API int sl_grab(int camera_id, struct SL_RuntimeParameters* runtime);
233 
244  INTERFACE_API int sl_read(int camera_id);
245 
253  INTERFACE_API void sl_get_device_list(struct SL_DeviceProperties device_list[MAX_CAMERA_PLUGIN], int* nb_devices);
254 
261  INTERFACE_API void sl_get_streaming_device_list(struct SL_StreamingProperties streaming_device_list[MAX_CAMERA_PLUGIN], int* nb_devices);
262 
273  INTERFACE_API int sl_reboot(int sn, bool full_reboot);
274 
288  INTERFACE_API int sl_enable_recording(int camera_id, const char* filename, enum SL_SVO_COMPRESSION_MODE compression_mode, unsigned int bitrate, int target_fps, bool transcode);
289 
294  INTERFACE_API struct SL_RecordingStatus* sl_get_recording_status(int camera_id);
299  INTERFACE_API void sl_disable_recording(int camera_id);
300 
308  INTERFACE_API struct SL_RecordingParameters* sl_get_recording_parameters(int camera_id);
309 
315  INTERFACE_API void sl_pause_recording(int camera_id, bool status);
316 
325  INTERFACE_API enum SL_ERROR_CODE sl_ingest_data_into_svo(int camera_id, struct SL_SVOData* data);
326 
338  INTERFACE_API int sl_get_svo_data_size(int camera_id, char key[128], unsigned long long ts_begin, unsigned long long ts_end);
339 
352  INTERFACE_API enum SL_ERROR_CODE sl_retrieve_svo_data(int camera_id, char* key, int nb_data, struct SL_SVOData** data, unsigned long long ts_begin, unsigned long long ts_end);
353 
360  INTERFACE_API int sl_get_svo_data_keys_size(int camera_id);
361 
371  INTERFACE_API void sl_get_svo_data_keys(int camera_id, int nb_keys, char** keys);
372 
384  INTERFACE_API int sl_enable_positional_tracking(int camera_id, struct SL_PositionalTrackingParameters* tracking_param, const char* area_file_path);
385 
386  // /**
387  // \brief Initializes and starts the positional tracking processes.
388  // This function allows you to enable the position estimation of the SDK. It only has to be called once in the camera's lifetime.
389  //
390  // \param camera_id : id of the camera instance.
391  // \param initial_world_rotation : rotation of the camera in the world frame when the camera is started. By default, it should be identity.
392  // \param initial_world_position : position of the camera in the world frame when the camera is started. By default, it should be identity.
393  // \param enable_area_memory : this mode enables the camera to remember its surroundings. This helps correct positional tracking drift, and can be helpful for positioning different cameras relative to one other in space.
394  // \param enable_pose_smoothing : this mode enables smooth pose correction for small drift correction.
395  // \param set_floor_as_origin : this mode initializes the tracking to be aligned with the floor plane to better position the camera in space.
396  // \param set_as_static : this mode defines the camera as static. If true, it will not move in the environment. This allows you to set its position using initial_world_transform.
397  // \param enable_imu_fusion : this mode enables or disables IMU fusion. When set to false, only the optical odometry will be used.
398  // \param area_file_path : area localization file that describes the surroundings, saved from a previous tracking session.
399  // \return \ref SL_ERROR_CODE::SUCCESS if everything went fine, ERROR_CODE::FAILURE otherwise.
400  // */
401  // /**INTERFACE_API int enable_positional_tracking(int camera_id, struct SL_Quaternion *initial_world_rotation, struct SL_Vector3 *initial_world_position, bool enable_area_memory, bool enable_pose_smoothing, bool set_floor_as_origin, bool set_as_static,
402  // bool enable_imu_fusion, const char* area_file_path);*/
403 
409  INTERFACE_API void sl_disable_positional_tracking(int camera_id, const char* area_file_path);
410 
417  INTERFACE_API int sl_save_area_map(int camera_id, const char* area_file_path);
418 
426  INTERFACE_API int sl_get_area_export_state(int camera_id);
427 
437  INTERFACE_API enum SL_ERROR_CODE sl_set_svo_position(int camera_id, int position);
438 
445  INTERFACE_API void sl_pause_svo_reading(int camera_id, bool status);
446 
452  INTERFACE_API float sl_get_camera_fps(int camera_id);
453 
459  INTERFACE_API float sl_get_current_fps(int camera_id);
460 
466  int INTERFACE_API sl_get_width(int camera_id);
467 
473  int INTERFACE_API sl_get_height(int camera_id);
474 
480  INTERFACE_API int sl_get_confidence_threshold(int camera_id);
481 
491  INTERFACE_API struct SL_CameraInformation* sl_get_camera_information(int camera_id, int res_width, int res_height);
492 
499  INTERFACE_API void sl_update_self_calibration(int camera_id);
500 
507  INTERFACE_API struct SL_CalibrationParameters* sl_get_calibration_parameters(int camera_id, bool raw_params);
508 
514  INTERFACE_API struct SL_SensorsConfiguration* sl_get_sensors_configuration(int camera_id);
515 
527  INTERFACE_API void sl_get_camera_imu_transform(int camera_id, struct SL_Vector3* translation, struct SL_Quaternion* rotation);
528 
534  INTERFACE_API int sl_get_input_type(int camera_id);
535 
541  INTERFACE_API int sl_get_zed_serial(int camera_id);
542 
548  INTERFACE_API int sl_get_camera_firmware(int camera_id);
549 
555  INTERFACE_API int sl_get_sensors_firmware(int camera_id);
556 
562  INTERFACE_API int sl_get_camera_model(int camera_id);
563 
571  INTERFACE_API unsigned long long sl_get_image_timestamp(int camera_id);
572 
580  INTERFACE_API unsigned long long sl_get_current_timestamp(int camera_id);
581 
587  INTERFACE_API int sl_get_svo_number_of_frames(int camera_id);
588 
595  INTERFACE_API bool sl_is_camera_setting_supported(int camera_id, enum SL_VIDEO_SETTINGS setting);
596 
605  INTERFACE_API enum SL_ERROR_CODE sl_set_camera_settings(int camera_id, enum SL_VIDEO_SETTINGS mode, int value);
606 
621  INTERFACE_API enum SL_ERROR_CODE sl_set_camera_settings_min_max(int camera_id, enum SL_VIDEO_SETTINGS mode, int min, int max);
622 
632  INTERFACE_API enum SL_ERROR_CODE sl_set_roi_for_aec_agc(int camera_id, enum SL_SIDE side, struct SL_Rect* roi, bool reset);
633 
643  INTERFACE_API enum SL_ERROR_CODE sl_get_camera_settings(int c_id, enum SL_VIDEO_SETTINGS mode, int* value);
644 
654  INTERFACE_API enum SL_ERROR_CODE sl_get_camera_settings_min_max(int c_id, enum SL_VIDEO_SETTINGS mode, int* minvalue, int* maxvalue);
655 
665  INTERFACE_API enum SL_ERROR_CODE sl_get_roi_for_aec_agc(int id, enum SL_SIDE side, struct SL_Rect* roi);
666 
672  INTERFACE_API float sl_get_depth_min_range_value(int camera_id);
673 
679  INTERFACE_API float sl_get_depth_max_range_value(int camera_id);
680 
688  INTERFACE_API int sl_get_current_min_max_depth(int camera_id, float* min, float* max);
689 
694  INTERFACE_API int sl_get_number_zed_connected();
695 
700  INTERFACE_API char* sl_get_sdk_version();
701 
709  INTERFACE_API int sl_convert_coordinate_system(struct SL_Quaternion* rotation, struct SL_Vector3* translation, enum SL_COORDINATE_SYSTEM coord_system_src, enum SL_COORDINATE_SYSTEM coord_system_dest);
710 
711  // /**
712  // \brief Returns the version of the currently installed ZED SDK.
713  // \param major : major int of the version filled
714  // \param minor : minor int of the version filled
715  // \param patch : patch int of the version filled
716  // */
717  // INTERFACE_API void sl_get_sdk_version(int *major, int *minor, int *patch);
718 
724  INTERFACE_API int sl_get_svo_position(int camera_id);
725 
733  INTERFACE_API int sl_get_svo_position_at_timestamp(int camera_id, unsigned long long timestamp);
734 
740  INTERFACE_API unsigned int sl_get_frame_dropped_count(int camera_id);
741 
742 
748  INTERFACE_API struct SL_HealthStatus* sl_get_health_status(int camera_id);
749 
750  INTERFACE_API struct SL_Resolution* sl_get_retrieve_image_resolution(int camera_id, struct SL_Resolution* res);
751 
752  INTERFACE_API struct SL_Resolution* sl_get_retrieve_measure_resolution(int camera_id, struct SL_Resolution* res);
756 
761  INTERFACE_API bool sl_is_positional_tracking_enabled(int camera_id);
762 
773  INTERFACE_API int sl_get_position_at_target_frame(int camera_id, struct SL_Quaternion* rotation, struct SL_Vector3* position, struct SL_Quaternion* target_quaternion, struct SL_Vector3* target_translation, enum SL_REFERENCE_FRAME reference_frame);
781  INTERFACE_API int sl_get_position_data(int camera_id, struct SL_PoseData* poseData, enum SL_REFERENCE_FRAME reference_frame);
790  INTERFACE_API int sl_get_position(int camera_id, struct SL_Quaternion* rotation, struct SL_Vector3* position, enum SL_REFERENCE_FRAME reference_frame);
798  INTERFACE_API int sl_get_position_array(int camera_id, float* pose, enum SL_REFERENCE_FRAME reference_frame);
799 
808  INTERFACE_API int sl_get_positional_tracking_landmarks(int camera_id, struct SL_Landmark** landmarks, uint32_t* count);
809 
818  INTERFACE_API int sl_get_positional_tracking_landmarks_2d(int camera_id, struct SL_Landmark2D** landmarks2d, uint32_t* count);
824 
832  INTERFACE_API int sl_reset_positional_tracking(int camera_id, struct SL_Quaternion rotation, struct SL_Vector3 translation);
842  INTERFACE_API int sl_reset_positional_tracking_with_offset(int camera_id, struct SL_Quaternion rotation, struct SL_Vector3 translation, struct SL_Quaternion target_quaternion, struct SL_Vector3 target_translation);
855  INTERFACE_API int sl_set_imu_prior_orientation(int camera_id, struct SL_Quaternion rotation);
867  INTERFACE_API int sl_get_imu_orientation(int camera_id, struct SL_Quaternion* quat, enum SL_TIME_REFERENCE time_reference);
879  INTERFACE_API int sl_get_sensors_data(int camera_id, struct SL_SensorsData* data, enum SL_TIME_REFERENCE time_reference);
880 
890  INTERFACE_API int sl_get_sensors_data_batch_count(int camera_id, int* count);
901  INTERFACE_API int sl_get_sensors_data_batch(int camera_id, struct SL_SensorsData** data);
902 
906 
920  INTERFACE_API void sl_spatial_mapping_merge_chunks(int camera_id, int nb_faces, int* nb_vertices, int* nb_triangles, int* nb_updated_submeshes, int* updated_indices, int* nb_vertices_tot, int* nb_triangles_tot, const int max_submesh);
921 
932  INTERFACE_API int sl_enable_spatial_mapping(int camera_id, struct SL_SpatialMappingParameters* mapping_param);
937  INTERFACE_API void sl_disable_spatial_mapping(int camera_id);
938 
952  INTERFACE_API void sl_pause_spatial_mapping(int camera_id, bool status);
957  INTERFACE_API void sl_request_mesh_async(int camera_id);
965  INTERFACE_API int sl_get_mesh_request_status_async(int camera_id);
973  INTERFACE_API enum SL_SPATIAL_MAPPING_STATE sl_get_spatial_mapping_state(int camera_id);
986  INTERFACE_API int sl_update_mesh(int camera_id, int* nb_vertices_per_submesh, int* nb_triangles_per_submesh, int* nb_submeshes, int* updated_indices, int* nb_vertices_tot, int* nb_triangles_tot, const int max_submesh);
1001  INTERFACE_API int sl_retrieve_mesh(int camera_id, float* vertices, int* triangles, unsigned char* colors, float* uvs, unsigned char* texture_ptr, const int max_submeshes);
1014  INTERFACE_API int sl_update_chunks(int camera_id, int* nb_vertices_per_submesh, int* nb_triangles_per_submesh, int* nb_submeshes, int* updated_indices, int* nb_vertices_tot, int* nb_triangles_tot, const int max_submesh);
1029  INTERFACE_API int sl_retrieve_chunks(int camera_id, float* vertices, int* triangles, unsigned char* colors, float* uvs, unsigned char* texture_ptr, const int max_submesh);
1030 
1037  INTERFACE_API int sl_update_fused_point_cloud(int camera_id, int* nb_vertices_tot);
1045  INTERFACE_API int sl_retrieve_fused_point_cloud(int camera_id, float* vertices);
1051  INTERFACE_API int sl_extract_whole_spatial_map(int camera_id);
1059  INTERFACE_API bool sl_save_mesh(int camera_id, const char* filename, enum SL_MESH_FILE_FORMAT format);
1067  INTERFACE_API bool sl_save_point_cloud(int c_id, const char* filename, enum SL_MESH_FILE_FORMAT format);
1082  INTERFACE_API bool sl_load_mesh(int camera_id, const char* filename, int* nb_vertices_per_submesh, int* nb_triangles_per_submesh, int* num_submeshes, int* updated_indices, int* nb_vertices_tot, int* nb_triangles_tot, int* textures_size, const int max_submesh);
1096  INTERFACE_API bool sl_apply_texture(int camera_id, int* nb_vertices_per_submesh, int* nb_triangles_per_submesh, int* nb_updated_submeshes, int* updated_indices, int* nb_vertices_tot, int* nb_triangles_tot, int* textures_size, const int max_submesh);
1110  INTERFACE_API bool sl_filter_mesh(int camera_id, enum SL_MESH_FILTER filter_params, int* nb_vertices_per_submesh, int* nb_triangles_per_submesh, int* nb_updated_submeshes, int* updated_indices, int* nb_vertices_tot, int* nb_triangles_tot, const int max_submesh);
1118  INTERFACE_API void sl_spatial_mapping_get_gravity_estimation(int camera_id, struct SL_Vector3* gravity);
1119 
1120 
1122 
1130  INTERFACE_API int sl_update_whole_mesh(int camera_id, int* nb_vertices, int* nb_triangles);
1142  INTERFACE_API int sl_retrieve_whole_mesh(int camera_id, float* vertices, int* triangles, unsigned char* colors, float* uvs, unsigned char* texture_ptr);
1153  INTERFACE_API bool sl_load_whole_mesh(int camera_id, const char* filename, int* nb_vertices, int* nb_triangles, int* texture_size);
1162  INTERFACE_API bool sl_apply_whole_texture(int camera_id, int* nb_vertices, int* nb_triangles, int* texture_size);
1170  INTERFACE_API bool sl_filter_whole_mesh(int camera_id, enum SL_MESH_FILTER filter_params, int* nb_vertices, int* nb_triangles);
1171 
1172 
1176 
1186  INTERFACE_API struct SL_PlaneData* sl_find_floor_plane(int camera_id, struct SL_Quaternion* reset_quaternion, struct SL_Vector3* reset_translation, struct SL_Quaternion prior_rotation, struct SL_Vector3 prior_translation);
1195  INTERFACE_API struct SL_PlaneData* sl_find_plane_at_hit(int camera_id, struct SL_Vector2 pixel, struct SL_PlaneDetectionParameters* params, bool thres);
1205  INTERFACE_API int sl_convert_floorplane_to_mesh(int camera_id, float* vertices, int* triangles, int* nb_vertices_tot, int* nb_triangles_tot);
1215  INTERFACE_API int sl_convert_hitplane_to_mesh(int camera_id, float* vertices, int* triangles, int* nb_vertices_tot, int* nb_triangles_tot);
1216 
1217 
1221 
1238  INTERFACE_API int sl_retrieve_measure(int camera_id, void* measure_ptr, enum SL_MEASURE type, enum SL_MEM mem, int width, int height, void* custream);
1252  INTERFACE_API int sl_retrieve_image(int camera_id, void* image_ptr, enum SL_VIEW type, enum SL_MEM mem, int width, int height, void* custream);
1253 
1261  INTERFACE_API int sl_convert_image(void* image_in_ptr, void* image_signed_ptr, void* stream);
1262 
1266 
1288  INTERFACE_API int sl_enable_streaming(int camera_id, enum SL_STREAMING_CODEC codec, unsigned int bitrate, unsigned short port, int gop_size, int adaptative_bitrate, int chunk_size, int target_framerate);
1289 
1294  INTERFACE_API void sl_disable_streaming(int camera_id);
1300  INTERFACE_API int sl_is_streaming_enabled(int camera_id);
1301 
1308  INTERFACE_API struct SL_StreamingParameters* sl_get_streaming_parameters(int camera_id);
1309 
1313 
1321  INTERFACE_API int sl_save_current_image(int camera_id, enum SL_VIEW view, const char* file_name);
1329  INTERFACE_API int sl_save_current_depth(int camera_id, enum SL_SIDE side, const char* file_name);
1337  INTERFACE_API int sl_save_current_point_cloud(int camera_id, enum SL_SIDE side, const char* file_name);
1338 
1339 
1340 
1341 #if WITH_OBJECT_DETECTION
1342 
1346 
1353  INTERFACE_API struct SL_AI_Model_status* sl_check_AI_model_status(enum SL_AI_MODELS model, int gpu_id);
1354 
1361  INTERFACE_API int sl_optimize_AI_model(enum SL_AI_MODELS model, int gpu_id);
1362 
1384  INTERFACE_API int sl_enable_object_detection(int camera_id, struct SL_ObjectDetectionParameters* object_detection_parameters);
1385 
1394 
1395 
1404  INTERFACE_API void sl_disable_object_detection(int camera_id, unsigned int instance_id, bool force_disable_all_instances);
1405 
1406 
1416  INTERFACE_API int sl_set_object_detection_runtime_parameters(int camera_id, struct SL_ObjectDetectionRuntimeParameters object_detection_parameters, unsigned int instance_id);
1417 
1440  INTERFACE_API int sl_enable_body_tracking(int camera_id, struct SL_BodyTrackingParameters* body_tracking_parameters);
1441 
1449  INTERFACE_API struct SL_BodyTrackingParameters* sl_get_body_tracking_parameters(int camera_id);
1450 
1459  INTERFACE_API void sl_disable_body_tracking(int camera_id, unsigned int instance_id, bool force_disable_all_instances);
1460 
1469  INTERFACE_API int sl_set_body_tracking_runtime_parameters(int camera_id, struct SL_BodyTrackingRuntimeParameters body_tracking_parameters, unsigned int instance_id);
1470 
1476  INTERFACE_API int sl_generate_unique_id(char* uuid);
1477 
1478  INTERFACE_API int sl_generate_unique_id_str(char* uuid);
1479 
1489  INTERFACE_API int sl_ingest_custom_box_objects(int camera_id, int nb_objects, struct SL_CustomBoxObjectData* objects_in, unsigned int instance_id);
1490 
1500  INTERFACE_API int sl_ingest_custom_mask_objects(int camera_id, int nb_objects, struct SL_CustomMaskObjectData* objects_in, unsigned int instance_id);
1501 
1510  INTERFACE_API int sl_retrieve_objects(int camera_id, struct SL_ObjectDetectionRuntimeParameters* object_detection_runtime_parameters, struct SL_Objects* objects, unsigned int instance_id);
1511 
1520  INTERFACE_API int sl_retrieve_custom_objects(int camera_id, struct SL_CustomObjectDetectionRuntimeParameters* object_detection_runtime_parameters, struct SL_Objects* objects, unsigned int instance_id);
1521 
1531  INTERFACE_API int sl_set_custom_object_detection_runtime_parameters(int camera_id, struct SL_CustomObjectDetectionRuntimeParameters custom_object_detection_parameters, unsigned int instance_id);
1532 
1541  INTERFACE_API int sl_retrieve_bodies(int camera_id, struct SL_BodyTrackingRuntimeParameters* body_tracking_runtime_parameters, struct SL_Bodies* bodies, unsigned int instance_id);
1542 
1549  INTERFACE_API int sl_update_objects_batch(int camera_id, int* nb_batches);
1550 
1559  INTERFACE_API int sl_get_objects_batch(int camera_id, int index, struct SL_ObjectsBatch* objs_batch);
1560 
1561  INTERFACE_API int sl_get_objects_batch_csharp(int camera_id, int index, int* nb_data, int* id, int* label, int* sublabel, int* tracking_state,
1562  struct SL_Vector3 positions[MAX_TRAJECTORY_SIZE], float position_covariances[MAX_TRAJECTORY_SIZE][6], struct SL_Vector3 velocities[MAX_TRAJECTORY_SIZE], unsigned long long timestamps[MAX_TRAJECTORY_SIZE],
1563  struct SL_Vector2 bounding_boxes_2d[MAX_TRAJECTORY_SIZE][4], struct SL_Vector3 bounding_boxes[MAX_TRAJECTORY_SIZE][8], float confidences[MAX_TRAJECTORY_SIZE], int action_states[MAX_TRAJECTORY_SIZE],
1564  struct SL_Vector2 head_bounding_boxes_2d[MAX_TRAJECTORY_SIZE][4], struct SL_Vector3 head_bounding_boxes[MAX_TRAJECTORY_SIZE][8],
1565  struct SL_Vector3 head_positions[MAX_TRAJECTORY_SIZE]);
1566 
1567 #if 0
1574  INTERFACE_API int sl_update_bodies_batch(int camera_id, int* nb_batches);
1575 
1576 
1577 
1584  INTERFACE_API int sl_get_bodies_batch(int camera_id, int index, struct SL_BodiesBatch* bodies_batch);
1585 
1586 
1587 #endif
1588 #endif
1589 #ifdef __cplusplus
1590 }
1591 #endif
1592 
1596 
1597 #ifdef __cplusplus
1598 extern "C" {
1599 #endif
1600 
1606 
1611 
1612  /*
1613  * \brief adds a camera to the multi camera handler
1614  * \param [in] uuid : unique ID that is associated with the camera for easy access.
1615  * \param [in] params : communications parameters
1616  * \param [in] pose_translation : position of the camera
1617  * \param [in] pose_rotation : orientation of the camera
1618  * \return SL_FUSION_ERROR_CODE
1619  * */
1620  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_subscribe(struct SL_CameraIdentifier* uuid, struct SL_CommunicationParameters* params, struct SL_Vector3* pose_translation, struct SL_Quaternion* pose_rotation);
1621 
1631  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_retrieve_image(void* mat, struct SL_CameraIdentifier* uuid, int width, int height);
1632 
1644  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_retrieve_measure(void* mat, struct SL_CameraIdentifier* uuid, enum SL_MEASURE measure, int width, int height, enum SL_FUSION_REFERENCE_FRAME reference_frame);
1645 
1652 
1653  /*
1654  * \brief update the pose of the camera in the fusion coordinate space
1655  * \param [in] uuid : unique ID that is associated with the camera for easy access.
1656  * \param [in] pose_translation : new position of the camera
1657  * \param [in] pose_rotation : new orientation of the camera
1658  * \return SL_FUSION_ERROR_CODE
1659  * */
1660  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_update_pose(struct SL_CameraIdentifier* uuid, struct SL_Vector3* pose_translation, struct SL_Quaternion* pose_rotation);
1661 
1668  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_get_pose(struct SL_CameraIdentifier* uuid, struct SL_Vector3* pose_translation, struct SL_Quaternion* pose_rotation);
1669 
1670  /*
1671  * \brief Returns the state of a connected data sender.
1672  * \param [in] uuid : Identifier of the camera.
1673  * \return SL_SENDER_ERROR_CODE : State of the sender
1674  * */
1675  INTERFACE_API enum SL_SENDER_ERROR_CODE sl_fusion_get_sender_state(struct SL_CameraIdentifier* uuid);
1676 
1686  INTERFACE_API void sl_fusion_read_configuration_file(const char* json_config_filename, enum SL_COORDINATE_SYSTEM coord_system, enum SL_UNIT unit, struct SL_FusionConfiguration configs[MAX_FUSED_CAMERAS], int* nb_cameras);
1687 
1688 
1698  INTERFACE_API void sl_fusion_read_configuration(const char* fusion_configuration, enum SL_COORDINATE_SYSTEM coord_system, enum SL_UNIT unit, struct SL_FusionConfiguration configs[MAX_FUSED_CAMERAS], int* nb_cameras);
1699 
1703 
1709 
1713  INTERFACE_API void sl_fusion_disable_body_tracking();
1714 
1724 
1732 
1733 
1737 
1745 
1754  INTERFACE_API enum SL_POSITIONAL_TRACKING_STATE sl_fusion_get_position(struct SL_PoseData* pose, enum SL_REFERENCE_FRAME reference_frame,
1755  struct SL_CameraIdentifier* uuid, enum SL_POSITION_TYPE retrieve_type);
1756 
1757 
1763 
1768 
1772 
1779  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_enu_to_geo(struct SL_ENU* in, struct SL_LatLng* out);
1780 
1787  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_geo_to_enu(struct SL_LatLng* in, struct SL_ENU* out);
1788 
1794  INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_ingest_gnss_data(struct SL_GNSSData* gnss_data, bool radian);
1795 
1802  INTERFACE_API enum SL_POSITIONAL_TRACKING_STATE sl_fusion_get_current_gnss_data(struct SL_GNSSData* data, bool radian);
1803 
1810  INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_get_geo_pose(struct SL_GeoPose* pose, bool radian);
1811 
1819  INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_geo_to_camera(struct SL_LatLng* in, struct SL_PoseData* out, bool radian);
1820 
1827  INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_camera_to_geo(struct SL_PoseData* in, struct SL_GeoPose* out, bool radian);
1828 
1833  INTERFACE_API unsigned long long sl_fusion_get_current_timestamp();
1834 
1842  INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_get_current_gnss_calibration_std(float* yaw_std, struct SL_Vector3* position_std);
1843 
1848  INTERFACE_API void sl_fusion_get_geo_tracking_calibration(struct SL_Vector3* translation, struct SL_Quaternion* rotation);
1849 
1853  INTERFACE_API void sl_fusion_close();
1854 
1855 #ifdef __cplusplus
1856 }
1857 #endif
1858 
1859 
1860 
1861 #ifdef __cplusplus
1862 extern "C" {
1863 #endif
1864 
1868 
1877  INTERFACE_API void* sl_mat_create_new(int width, int height, enum SL_MAT_TYPE type, enum SL_MEM mem);
1882  INTERFACE_API void* sl_mat_create_new_empty();
1888  INTERFACE_API bool sl_mat_is_init(void* ptr);
1894  INTERFACE_API void sl_mat_free(void* ptr, enum SL_MEM mem);
1900  INTERFACE_API void sl_mat_get_infos(void* ptr, char* buffer);
1901 
1902  // GET values
1912  INTERFACE_API int sl_mat_get_value_uchar(void* ptr, int col, int row, unsigned char* value, enum SL_MEM mem);
1922  INTERFACE_API int sl_mat_get_value_uchar2(void* ptr, int col, int row, struct SL_Uchar2* value, enum SL_MEM mem);
1932  INTERFACE_API int sl_mat_get_value_uchar3(void* ptr, int col, int row, struct SL_Uchar3* value, enum SL_MEM mem);
1942  INTERFACE_API int sl_mat_get_value_uchar4(void* ptr, int col, int row, struct SL_Uchar4* value, enum SL_MEM mem);
1943 
1953  INTERFACE_API int sl_mat_get_value_float(void* ptr, int col, int row, float* value, enum SL_MEM mem);
1963  INTERFACE_API int sl_mat_get_value_float2(void* ptr, int col, int row, struct SL_Vector2* value, enum SL_MEM mem);
1973  INTERFACE_API int sl_mat_get_value_float3(void* ptr, int col, int row, struct SL_Vector3* value, enum SL_MEM mem);
1983  INTERFACE_API int sl_mat_get_value_float4(void* ptr, int col, int row, struct SL_Vector4* value, enum SL_MEM mem);
1984 
1985  // SET VALUE
1995  INTERFACE_API int sl_mat_set_value_uchar(void* ptr, int col, int row, unsigned char value, enum SL_MEM mem);
2005  INTERFACE_API int sl_mat_set_value_uchar2(void* ptr, int col, int row, struct SL_Uchar2 value, enum SL_MEM mem);
2015  INTERFACE_API int sl_mat_set_value_uchar3(void* ptr, int col, int row, struct SL_Uchar3 value, enum SL_MEM mem);
2025  INTERFACE_API int sl_mat_set_value_uchar4(void* ptr, int col, int row, struct SL_Uchar4 value, enum SL_MEM mem);
2035  INTERFACE_API int sl_mat_set_value_float(void* ptr, int col, int row, float value, enum SL_MEM mem);
2045  INTERFACE_API int sl_mat_set_value_float2(void* ptr, int col, int row, struct SL_Vector2 value, enum SL_MEM mem);
2055  INTERFACE_API int sl_mat_set_value_float3(void* ptr, int col, int row, struct SL_Vector3 value, enum SL_MEM mem);
2065  INTERFACE_API int sl_mat_set_value_float4(void* ptr, int col, int row, struct SL_Vector4 value, enum SL_MEM mem);
2066 
2067  //SET TO
2075  INTERFACE_API int sl_mat_set_to_uchar(void* ptr, unsigned char value, enum SL_MEM mem);
2083  INTERFACE_API int sl_mat_set_to_uchar2(void* ptr, struct SL_Uchar2 value, enum SL_MEM mem);
2091  INTERFACE_API int sl_mat_set_to_uchar3(void* ptr, struct SL_Uchar3 value, enum SL_MEM mem);
2099  INTERFACE_API int sl_mat_set_to_uchar4(void* ptr, struct SL_Uchar4 value, enum SL_MEM mem);
2107  INTERFACE_API int sl_mat_set_to_float(void* ptr, float value, enum SL_MEM mem);
2115  INTERFACE_API int sl_mat_set_to_float2(void* ptr, struct SL_Vector2 value, enum SL_MEM mem);
2123  INTERFACE_API int sl_mat_set_to_float3(void* ptr, struct SL_Vector3 value, enum SL_MEM mem);
2131  INTERFACE_API int sl_mat_set_to_float4(void* ptr, struct SL_Vector4 value, enum SL_MEM mem);
2132 
2138  INTERFACE_API int sl_mat_update_cpu_from_gpu(void* ptr);
2144  INTERFACE_API int sl_mat_update_gpu_from_cpu(void* ptr);
2152  INTERFACE_API int sl_mat_copy_to(void* ptr, void* ptr_dest, enum SL_COPY_TYPE cpy_type);
2153 
2162  INTERFACE_API int sl_mat_read(void* ptr, const char* file_path);
2169  INTERFACE_API int sl_mat_write(void* ptr, const char* file_path);
2175  INTERFACE_API int sl_mat_get_width(void* ptr);
2181  INTERFACE_API int sl_mat_get_height(void* ptr);
2187  INTERFACE_API int sl_mat_get_channels(void* ptr);
2193  INTERFACE_API int sl_mat_get_memory_type(void* ptr);
2194 
2200  INTERFACE_API int sl_mat_get_data_type(void* ptr);
2206  INTERFACE_API int sl_mat_get_pixel_bytes(void* ptr);
2213  INTERFACE_API int sl_mat_get_step(void* ptr, enum SL_MEM mem);
2220  INTERFACE_API int sl_mat_get_step_bytes(void* ptr, enum SL_MEM mem);
2226  INTERFACE_API int sl_mat_get_width_bytes(void* ptr);
2231  INTERFACE_API bool sl_mat_is_memory_owner(void* ptr);
2237  INTERFACE_API struct SL_Resolution sl_mat_get_resolution(void* ptr);
2246  INTERFACE_API void sl_mat_alloc(void* ptr, int width, int height, enum SL_MAT_TYPE type, enum SL_MEM mem);
2255  INTERFACE_API int sl_mat_set_from(void* ptr, void* ptr_source, enum SL_COPY_TYPE copy_type);
2262  INTERFACE_API int* sl_mat_get_ptr(void* ptr, enum SL_MEM mem);
2268  INTERFACE_API int sl_mat_clone(void* ptr, void* ptr_source);
2269 
2275  INTERFACE_API void sl_mat_swap(void* ptr_1, void* ptr_2);
2276 
2281  INTERFACE_API int sl_mat_convert_color(void* ptr, enum SL_MEM memory, bool swap_RB_channels, void* stream);
2282 
2288  INTERFACE_API int sl_convert_color(void* mat1, void* mat2, bool swap_RB_channels, bool remove_alpha_channels, enum SL_MEM memory, void* stream);
2289 
2302  INTERFACE_API int sl_blob_from_image(void* image_in, void* tensor_out, struct SL_Resolution resolution_out,
2303  float scalefactor, struct SL_Vector3 mean, struct SL_Vector3 stddev, bool keep_aspect_ratio, bool swap_RB_channels,
2304  void* stream);
2305 
2320  INTERFACE_API int sl_blob_from_images(void** image_in, int nb_images, void* tensor_out, struct SL_Resolution resolution_out,
2321  float scalefactor, struct SL_Vector3 mean, struct SL_Vector3 stddev, bool keep_aspect_ratio, bool swap_RB_channels,
2322  void* stream);
2323 
2328  INTERFACE_API bool sl_is_camera_one(enum SL_MODEL m);
2329 
2335  INTERFACE_API bool sl_is_resolution_available(enum SL_RESOLUTION r, enum SL_MODEL m);
2336 
2343  INTERFACE_API bool sl_is_FPS_available(int fps, enum SL_RESOLUTION r, enum SL_MODEL m);
2344 
2350  INTERFACE_API bool sl_is_HDR_available(enum SL_RESOLUTION r, enum SL_MODEL m);
2351 
2352 
2353 #ifdef __cplusplus
2354 }
2355 #endif
2356 
2357 #endif
Structure containing AI model status.
Definition: types_c.h:2604
Structure containing the results of the body tracking module.
Definition: types_c.h:3715
Holds the options used to initialize the body tracking module of the Fusion.
Definition: types_c.h:4409
Holds the options used to change the behavior of the body tracking module at runtime.
Definition: types_c.h:4430
Structure containing a set of parameters for the body tracking module.
Definition: types_c.h:2974
Structure containing a set of runtime parameters for the body tracking module.
Definition: types_c.h:3061
Structure containing intrinsic and extrinsic parameters of the camera (translation and rotation).
Definition: types_c.h:1897
Used to identify a specific camera in the Fusion API.
Definition: types_c.h:4456
Structure containing information of a single camera (serial number, model, input type,...
Definition: types_c.h:2023
Definition: types_c.h:4228
Structure that store externally detected objects.
Definition: types_c.h:3219
Definition: types_c.h:3365
Structure containing a set of runtime parameters for the object detection module using your own model...
Definition: types_c.h:2949
Structure containing information about the properties of a camera.
Definition: types_c.h:1756
Represents a world position in ENU format.
Definition: types_c.h:4711
Class containing the overall position fusion status.
Definition: types_c.h:4200
Useful struct to store the Fusion configuration, can be read from /write to a JSON file.
Definition: types_c.h:4237
Holds the metrics of the fusion process.
Definition: types_c.h:4508
Structure containing GNSS data to be used for positional tracking as prior.
Definition: types_c.h:4537
Holds Geo reference position.
Definition: types_c.h:4619
Definition: types_c.h:3971
Holds the options used to initialize the Fusion object.
Definition: types_c.h:4327
Structure containing the options used to initialize a camera.
Definition: types_c.h:1424
Represents a 2d landmark.
Definition: types_c.h:2166
Represents a 3d landmark.
Definition: types_c.h:2151
Represents a world position in LatLng format.
Definition: types_c.h:4596
Structure containing a set of parameters for the object detection module.
Definition: types_c.h:2616
Structure containing a set of runtime parameters for the object detection module.
Definition: types_c.h:2751
Structure containing batched data of a detected objects from the object detection module.
Definition: types_c.h:3757
Structure containing the results of the object detection module.
Definition: types_c.h:3524
Structure representing a plane defined by a point and a normal, or a plane equation.
Definition: types_c.h:243
enum UNITY_PLAN_TYPE type
Type of the plane defined by its orientation.
Definition: types_c.h:249
Structure containing a set of parameters for the plane detection functionality.
Definition: types_c.h:2222
Structure containing positional tracking data giving the position and orientation of the camera in 3D...
Definition: types_c.h:194
Holds the options used for initializing the positional tracking fusion module.
Definition: types_c.h:4785
Structure containing a set of parameters for the positional tracking module initialization.
Definition: types_c.h:2054
Lists the different status of positional tracking.
Definition: types_c.h:816
Structure representing a quaternion.
Definition: types_c.h:25
Structure containing the options used to record.
Definition: types_c.h:2278
Structure containing information about the status of the recording.
Definition: types_c.h:2242
Structure defining a 2D rectangle with top-left corner coordinates and width/height in pixels.
Definition: types_c.h:3906
Structure containing a set of parameters for the region of interest.
Definition: types_c.h:2193
Structure containing the width and height of an image.
Definition: types_c.h:1403
int width
Width of the image in pixels.
Definition: types_c.h:1407
int height
Height of the image in pixels.
Definition: types_c.h:1411
Structure containing parameters that defines the behavior of sl_grab().
Definition: types_c.h:1695
Structure containing data that can be stored in and retrieved from SVOs. That information will be ing...
Definition: types_c.h:2327
Structure containing information about all the sensors available in the current device.
Definition: types_c.h:1971
Structure containing all sensors data (except image sensors) to be used for positional tracking or en...
Definition: types_c.h:411
Structure containing a set of parameters for the spatial mapping module.
Definition: types_c.h:2480
Structure containing the options used to stream with the ZED SDK.
Definition: types_c.h:2355
Structure containing information about the properties of a streaming device.
Definition: types_c.h:2432
Structure representing an unsigned char 2-dimensional vector.
Definition: types_c.h:118
Structure representing an unsigned char 3-dimensional vector.
Definition: types_c.h:132
Structure representing an unsigned char 4-dimensional vector.
Definition: types_c.h:150
Structure representing a generic 2-dimensional vector.
Definition: types_c.h:35
Structure representing a generic 3-dimensional vector.
Definition: types_c.h:63
Structure representing a generic 4-dimensional vector.
Definition: types_c.h:81
SL_COORDINATE_SYSTEM
Lists available coordinates systems for positional tracking and 3D measures.
Definition: types_c.h:517
SL_SPATIAL_MAPPING_STATE
Lists the different states of spatial mapping.
Definition: types_c.h:858
SL_MODULE
Definition: types_c.h:1382
SL_MESH_FILE_FORMAT
Lists available mesh file formats.
Definition: types_c.h:886
SL_AI_MODELS
Lists available AI models.
Definition: types_c.h:1028
SL_STREAMING_CODEC
Lists the different encoding types for image streaming.
Definition: types_c.h:635
SL_MAT_TYPE
Lists available matrix formats.
Definition: types_c.h:943
SL_RESOLUTION
Lists available resolutions.
Definition: types_c.h:488
SL_VIDEO_SETTINGS
Lists available camera settings for the camera (contrast, hue, saturation, gain, ....
Definition: types_c.h:645
SL_ERROR_CODE
Lists error codes in the ZED SDK.
Definition: types_c.h:438
SL_TIME_REFERENCE
Lists possible time references for timestamps or data.
Definition: types_c.h:627
SL_SIDE
Lists possible sides on which to get data from.
Definition: types_c.h:599
SL_REFERENCE_FRAME
Lists possible types of position matrix used to store camera path and pose.
Definition: types_c.h:619
SL_MESH_FILTER
Lists available mesh filtering intensities.
Definition: types_c.h:877
SL_POSITIONAL_TRACKING_STATE
Lists the different states of positional tracking.
Definition: types_c.h:761
SL_MEM
Lists available memory type.
Definition: types_c.h:557
SL_GNSS_FUSION_STATUS
Class containing the current GNSS fusion status.
Definition: types_c.h:4169
SL_MODEL
Lists ZED camera model.
Definition: types_c.h:537
SL_SVO_COMPRESSION_MODE
Lists available compression modes for SVO recording.
Definition: types_c.h:929
SL_VIEW
Lists available views.
Definition: types_c.h:701
SL_POSITION_TYPE
Lists the types of possible position outputs.
Definition: types_c.h:1395
SL_COPY_TYPE
Lists available copy operation on matrix.
Definition: types_c.h:918
SL_REGION_OF_INTEREST_AUTO_DETECTION_STATE
Lists the different states of region of interest auto detection.
Definition: types_c.h:836
SL_UNIT
Lists available units for measures.
Definition: types_c.h:504
SL_FUSION_REFERENCE_FRAME
Enum to define the reference frame of the fusion SDK.
Definition: types_c.h:4191
SL_FUSION_ERROR_CODE
Lists the types of error that can be raised by the Fusion.
Definition: types_c.h:4021
SL_SENDER_ERROR_CODE
Lists the types of error that can be raised during the Fusion by senders.
Definition: types_c.h:4097
SL_MEASURE
Lists retrievable measures.
Definition: types_c.h:676
INTERFACE_API struct SL_CameraInformation * sl_get_camera_information(int camera_id, int res_width, int res_height)
Returns the SL_CameraInformation associated the camera.
INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_get_current_gnss_calibration_std(float *yaw_std, struct SL_Vector3 *position_std)
Get the current calibration uncertainty defined during calibration process.
INTERFACE_API int sl_retrieve_bodies(int camera_id, struct SL_BodyTrackingRuntimeParameters *body_tracking_runtime_parameters, struct SL_Bodies *bodies, unsigned int instance_id)
Retrieve bodies detected by the body tracking module.
INTERFACE_API int sl_mat_get_value_uchar3(void *ptr, int col, int row, struct SL_Uchar3 *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_U8_C3.
INTERFACE_API int sl_mat_get_value_uchar(void *ptr, int col, int row, unsigned char *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_U8_C1.
INTERFACE_API void * sl_mat_create_new(int width, int height, enum SL_MAT_TYPE type, enum SL_MEM mem)
Creates a matrix with the given resolution.
INTERFACE_API enum SL_ERROR_CODE sl_start_publishing(int camera_id, struct SL_CommunicationParameters *comm_params)
Set this camera as a data provider for the Fusion module.
INTERFACE_API struct SL_SpatialMappingParameters * sl_get_spatial_mapping_parameters(int camera_id)
Returns the SL_SpatialMappingParameters used.
INTERFACE_API int sl_mat_get_value_float3(void *ptr, int col, int row, struct SL_Vector3 *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_F32_C3.
INTERFACE_API void sl_disable_object_detection(int camera_id, unsigned int instance_id, bool force_disable_all_instances)
Disables the Object Detection process.
INTERFACE_API void sl_mat_free(void *ptr, enum SL_MEM mem)
Frees the memory of the matrix.
INTERFACE_API int * sl_mat_get_ptr(void *ptr, enum SL_MEM mem)
Gets a pointer to the matrix.
INTERFACE_API int sl_convert_coordinate_system(struct SL_Quaternion *rotation, struct SL_Vector3 *translation, enum SL_COORDINATE_SYSTEM coord_system_src, enum SL_COORDINATE_SYSTEM coord_system_dest)
Change the coordinate system of a transform matrix.
INTERFACE_API bool sl_create_camera(int camera_id)
Creates a camera with resolution mode, fps and id for linux.
INTERFACE_API int sl_mat_set_value_float(void *ptr, int col, int row, float value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_F32_C1.
INTERFACE_API float sl_get_current_fps(int camera_id)
Returns the current FPS.
INTERFACE_API bool sl_is_camera_setting_supported(int camera_id, enum SL_VIDEO_SETTINGS setting)
Test if the video setting is supported by the camera.
INTERFACE_API int sl_mat_set_value_float4(void *ptr, int col, int row, struct SL_Vector4 value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_F32_C4.
INTERFACE_API int sl_ingest_custom_box_objects(int camera_id, int nb_objects, struct SL_CustomBoxObjectData *objects_in, unsigned int instance_id)
Feed the 3D Object tracking function with your own 2D bounding boxes from your own detection algorith...
INTERFACE_API int sl_get_positional_tracking_landmarks_2d(int camera_id, struct SL_Landmark2D **landmarks2d, uint32_t *count)
Get the current positional tracking 2d landmarks. \Note the landmarks array has to be freed by the us...
INTERFACE_API struct SL_ObjectDetectionParameters * sl_get_object_detection_parameters(int camera_id)
Returns the SL_ObjectDetectionParameters used.
INTERFACE_API int sl_set_region_of_interest(int camera_id, void *roi_mask, bool module[SL_MODULE_LAST])
Defines a region of interest to focus on for all the SDK, discarding other parts.
INTERFACE_API void sl_fusion_read_configuration(const char *fusion_configuration, enum SL_COORDINATE_SYSTEM coord_system, enum SL_UNIT unit, struct SL_FusionConfiguration configs[MAX_FUSED_CAMERAS], int *nb_cameras)
Read a Configuration JSON string to configure a fusion process.
INTERFACE_API enum SL_ERROR_CODE sl_set_svo_position(int camera_id, int position)
Sets the playback cursor to the desired frame number in the SVO file.
INTERFACE_API int sl_retrieve_custom_objects(int camera_id, struct SL_CustomObjectDetectionRuntimeParameters *object_detection_runtime_parameters, struct SL_Objects *objects, unsigned int instance_id)
Retrieve objects detected by the custom object detection module.
INTERFACE_API bool sl_filter_mesh(int camera_id, enum SL_MESH_FILTER filter_params, int *nb_vertices_per_submesh, int *nb_triangles_per_submesh, int *nb_updated_submeshes, int *updated_indices, int *nb_vertices_tot, int *nb_triangles_tot, const int max_submesh)
Filters a mesh to removes triangles while still preserving its overall shaper (though less accurate).
INTERFACE_API struct SL_PositionalTrackingStatus * sl_get_positional_tracking_status(int camera_id)
Return the current status of positional tracking module.
INTERFACE_API int sl_get_camera_firmware(int camera_id)
Gets the ZED camera current firmware version.
INTERFACE_API enum SL_ERROR_CODE sl_set_camera_settings(int camera_id, enum SL_VIDEO_SETTINGS mode, int value)
Sets the value of the requested camera setting (gain, brightness, hue, exposure, etc....
INTERFACE_API int sl_mat_copy_to(void *ptr, void *ptr_dest, enum SL_COPY_TYPE cpy_type)
Copies data from this matrix to another matrix (deep copy).
INTERFACE_API int sl_mat_read(void *ptr, const char *file_path)
Reads an image from a file.
INTERFACE_API enum SL_ERROR_CODE sl_get_camera_settings_min_max(int c_id, enum SL_VIDEO_SETTINGS mode, int *minvalue, int *maxvalue)
Returns the current range of the requested camera setting (setting with range value).
INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_camera_to_geo(struct SL_PoseData *in, struct SL_GeoPose *out, bool radian)
returns the current GeoPose
INTERFACE_API int sl_enable_body_tracking(int camera_id, struct SL_BodyTrackingParameters *body_tracking_parameters)
Initializes and starts the Deep Learning Body Tracking module.
INTERFACE_API int sl_mat_set_to_uchar(void *ptr, unsigned char value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_U8_C1 with the given value.
INTERFACE_API int sl_get_svo_data_size(int camera_id, char key[128], unsigned long long ts_begin, unsigned long long ts_end)
Gets the size of data available for a given key. Must be called before sl_retrieve_svo_data to initia...
INTERFACE_API int sl_mat_set_value_float3(void *ptr, int col, int row, struct SL_Vector3 value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_F32_C3.
INTERFACE_API unsigned int sl_get_frame_dropped_count(int camera_id)
Gets the number of frames dropped since sl_grab() was called for the first time. Based on camera time...
INTERFACE_API bool sl_is_FPS_available(int fps, enum SL_RESOLUTION r, enum SL_MODEL m)
Check if a frame rate is available for a given resolution and camera model.
INTERFACE_API int sl_ingest_custom_mask_objects(int camera_id, int nb_objects, struct SL_CustomMaskObjectData *objects_in, unsigned int instance_id)
Feed the 3D Object tracking function with your own 2D bounding boxes with masks from your own detecti...
INTERFACE_API int sl_mat_get_value_float4(void *ptr, int col, int row, struct SL_Vector4 *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_F32_C4.
INTERFACE_API struct SL_RecordingParameters * sl_get_recording_parameters(int camera_id)
Returns the SL_RecordingParameters used.
INTERFACE_API int sl_get_position_at_target_frame(int camera_id, struct SL_Quaternion *rotation, struct SL_Vector3 *position, struct SL_Quaternion *target_quaternion, struct SL_Vector3 *target_translation, enum SL_REFERENCE_FRAME reference_frame)
Gets the current position of the camera and state of the tracking, with an optional offset to the tra...
INTERFACE_API int sl_get_confidence_threshold(int camera_id)
Gets the current confidence threshold value for the disparity map (and by extension the depth map).
INTERFACE_API struct SL_FusedPositionalTrackingStatus * sl_fusion_get_fused_positional_tracking_status()
Get the current status of fused position.
INTERFACE_API int sl_set_body_tracking_runtime_parameters(int camera_id, struct SL_BodyTrackingRuntimeParameters body_tracking_parameters, unsigned int instance_id)
Set the Body tracking module instance runtime parameters By default the Body tracking module will use...
INTERFACE_API int sl_get_objects_batch(int camera_id, int index, struct SL_ObjectsBatch *objs_batch)
Gets a batch of detected objects.
INTERFACE_API void sl_mat_get_infos(void *ptr, char *buffer)
Returns the information about the matrix into a string.
INTERFACE_API struct SL_AI_Model_status * sl_check_AI_model_status(enum SL_AI_MODELS model, int gpu_id)
Check if a corresponding optimized engine is found for the requested Model based on your rig configur...
INTERFACE_API int sl_retrieve_image(int camera_id, void *image_ptr, enum SL_VIEW type, enum SL_MEM mem, int width, int height, void *custream)
Retrieves an image texture from the ZED SDK in a human-viewable format.
INTERFACE_API unsigned long long sl_fusion_get_current_timestamp()
returns the current timestamp
INTERFACE_API void sl_spatial_mapping_get_gravity_estimation(int camera_id, struct SL_Vector3 *gravity)
Gets a vector pointing toward the direction of gravity. This is estimated from a 3D scan of the envir...
INTERFACE_API int sl_save_area_map(int camera_id, const char *area_file_path)
Saves the current area learning file. The file will contain spatial memory data generated by the trac...
INTERFACE_API int sl_update_fused_point_cloud(int camera_id, int *nb_vertices_tot)
Updates the fused point cloud (if spatial map type was SL_SPATIAL_MAP_TYPE_FUSED_POINT_CLOUD).
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_process()
process the fusion.
INTERFACE_API int sl_get_camera_model(int camera_id)
Gets the ZED Camera model (see SL_MODEL).
INTERFACE_API void sl_disable_streaming(int camera_id)
Disables the streaming initiated by sl_enable_streaming().
INTERFACE_API bool sl_is_camera_one(enum SL_MODEL m)
Check if the camera is a ZED One (Monocular) or ZED (Stereo)
INTERFACE_API void sl_pause_recording(int camera_id, bool status)
Pauses or resumes the recording.
INTERFACE_API void sl_get_device_list(struct SL_DeviceProperties device_list[MAX_CAMERA_PLUGIN], int *nb_devices)
Lists all the connected devices with their associated information.
INTERFACE_API int sl_retrieve_objects(int camera_id, struct SL_ObjectDetectionRuntimeParameters *object_detection_runtime_parameters, struct SL_Objects *objects, unsigned int instance_id)
Retrieve objects detected by the object detection module.
INTERFACE_API int sl_mat_get_value_uchar4(void *ptr, int col, int row, struct SL_Uchar4 *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_U8_C4.
INTERFACE_API char * sl_get_sdk_version()
Returns the version of the currently installed ZED SDK.
INTERFACE_API void sl_disable_positional_tracking(int camera_id, const char *area_file_path)
Disables the positional tracking.
INTERFACE_API int sl_update_chunks(int camera_id, int *nb_vertices_per_submesh, int *nb_triangles_per_submesh, int *nb_submeshes, int *updated_indices, int *nb_vertices_tot, int *nb_triangles_tot, const int max_submesh)
Updates the Internal version of the mesh and returns the sizes of the meshes.
INTERFACE_API bool sl_load_whole_mesh(int camera_id, const char *filename, int *nb_vertices, int *nb_triangles, int *texture_size)
Loads a saved mesh file.
INTERFACE_API bool sl_load_mesh(int camera_id, const char *filename, int *nb_vertices_per_submesh, int *nb_triangles_per_submesh, int *num_submeshes, int *updated_indices, int *nb_vertices_tot, int *nb_triangles_tot, int *textures_size, const int max_submesh)
Loads a saved mesh file.
INTERFACE_API bool sl_mat_is_memory_owner(void *ptr)
Returns whether the matrix is the owner of the memory it accesses.
INTERFACE_API int sl_get_imu_orientation(int camera_id, struct SL_Quaternion *quat, enum SL_TIME_REFERENCE time_reference)
Gets the rotation given by the IMU.
INTERFACE_API int sl_get_svo_position(int camera_id)
Returns the current playback position in the SVO file.
INTERFACE_API int sl_get_svo_data_keys_size(int camera_id)
Gets the number of external channels that can be retrieved from the SVO file.
INTERFACE_API int sl_save_current_point_cloud(int camera_id, enum SL_SIDE side, const char *file_name)
Writes the point cloud into a file defined by its extension.
INTERFACE_API int sl_mat_get_width_bytes(void *ptr)
Returns the size of a row in bytes.
INTERFACE_API int sl_mat_set_to_uchar4(void *ptr, struct SL_Uchar4 value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_U8_C4 with the given value.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_init(struct SL_InitFusionParameters *params)
FusionHandler initialisation. Initializes memory/generic datas.
INTERFACE_API struct SL_CalibrationParameters * sl_get_calibration_parameters(int camera_id, bool raw_params)
Gets the Calibration Parameters.
INTERFACE_API void sl_mat_alloc(void *ptr, int width, int height, enum SL_MAT_TYPE type, enum SL_MEM mem)
Allocates memory for the matrix.
INTERFACE_API void sl_unload_all_instances()
Forces unload of all instances.
INTERFACE_API int sl_start_region_of_interest_auto_detection(int camera_id, struct SL_RegionOfInterestParameters *roi_param)
Start the auto detection of a region of interest to focus on for all the SDK, discarding other parts....
INTERFACE_API void sl_spatial_mapping_merge_chunks(int camera_id, int nb_faces, int *nb_vertices, int *nb_triangles, int *nb_updated_submeshes, int *updated_indices, int *nb_vertices_tot, int *nb_triangles_tot, const int max_submesh)
Consolidates the chucks from a scan. This is used to turn a lots of small meshes (which are efficient...
INTERFACE_API int sl_mat_get_value_float(void *ptr, int col, int row, float *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_F32_C1.
INTERFACE_API enum SL_ERROR_CODE sl_stop_publishing(int camera_id)
Set this camera as normal camera(without data providing). Stop to send camera data to fusion.
INTERFACE_API void sl_request_mesh_async(int camera_id)
Starts the spatial map generation process in a non-blocking thread from the spatial mapping process.
INTERFACE_API int sl_is_streaming_enabled(int camera_id)
Tells if the streaming is running.
INTERFACE_API void sl_disable_body_tracking(int camera_id, unsigned int instance_id, bool force_disable_all_instances)
Disables the body tracking process.
INTERFACE_API bool sl_is_resolution_available(enum SL_RESOLUTION r, enum SL_MODEL m)
Check if a resolution is available for a given camera model.
INTERFACE_API int sl_get_position(int camera_id, struct SL_Quaternion *rotation, struct SL_Vector3 *position, enum SL_REFERENCE_FRAME reference_frame)
Retrieves the estimated position and orientation of the camera in the specified reference frame.
INTERFACE_API int sl_get_svo_number_of_frames(int camera_id)
Returns the number of frames in the SVO file.
INTERFACE_API bool sl_save_mesh(int camera_id, const char *filename, enum SL_MESH_FILE_FORMAT format)
Saves the scanned mesh in a specific file format.
INTERFACE_API void sl_disable_spatial_mapping(int camera_id)
Disables the spatial mapping process.
INTERFACE_API int sl_enable_recording(int camera_id, const char *filename, enum SL_SVO_COMPRESSION_MODE compression_mode, unsigned int bitrate, int target_fps, bool transcode)
Creates a file for recording the ZED's output into a .SVO or .AVI video.
INTERFACE_API void sl_disable_recording(int camera_id)
Disables the recording initiated by sl_enable_recording() and closes the generated file.
INTERFACE_API int sl_save_current_image(int camera_id, enum SL_VIEW view, const char *file_name)
Writes the image into a file defined by its extension.
INTERFACE_API int sl_mat_get_channels(void *ptr)
Returns the number of values stored in one pixel.
INTERFACE_API struct SL_PositionalTrackingParameters * sl_get_positional_tracking_parameters(int camera_id)
Returns the SL_PositionalTrackingParameters used.
INTERFACE_API int sl_save_current_depth(int camera_id, enum SL_SIDE side, const char *file_name)
Writes the depth map into a file defined by its extension.
INTERFACE_API struct SL_PlaneData * sl_find_plane_at_hit(int camera_id, struct SL_Vector2 pixel, struct SL_PlaneDetectionParameters *params, bool thres)
Checks the plane at the given left image coordinates.
INTERFACE_API int sl_mat_convert_color(void *ptr, enum SL_MEM memory, bool swap_RB_channels, void *stream)
Convert the color channels of the Mat (RGB<->BGR or RGBA<->BGRA) This methods works only on 8U_C4 or ...
INTERFACE_API int sl_set_custom_object_detection_runtime_parameters(int camera_id, struct SL_CustomObjectDetectionRuntimeParameters custom_object_detection_parameters, unsigned int instance_id)
Set the Object detection module instance runtime parameters when using the Custom model (OBJECT_DETEC...
INTERFACE_API int sl_get_svo_position_at_timestamp(int camera_id, unsigned long long timestamp)
Retrieves the frame index within the SVO file corresponding to the provided timestamp.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_retrieve_image(void *mat, struct SL_CameraIdentifier *uuid, int width, int height)
Returns the current sl_VIEW_LEFT of the specified camera, the data is synchronized.
INTERFACE_API int sl_get_current_min_max_depth(int camera_id, float *min, float *max)
Gets the current range of perceived depth.
INTERFACE_API int sl_open_camera_from_serial_number(int camera_id, struct SL_InitParameters *init_parameters, const unsigned int serial_number, const char *output_file, const char *opt_settings_path, const char *opencv_calib_path)
Opens the ZED camera from the provided SL_InitParameters using its serial number.
INTERFACE_API struct SL_RuntimeParameters * sl_get_runtime_parameters(int camera_id)
Returns the SL_RuntimeParameters used.
INTERFACE_API int sl_mat_get_memory_type(void *ptr)
Gets the type of memory (CPU and/or GPU).
INTERFACE_API int sl_enable_positional_tracking(int camera_id, struct SL_PositionalTrackingParameters *tracking_param, const char *area_file_path)
Initializes and starts the positional tracking processes.
INTERFACE_API bool sl_is_opened(int camera_id)
Reports if the camera has been successfully opened.
INTERFACE_API int sl_retrieve_fused_point_cloud(int camera_id, float *vertices)
Retrieves all points of the fused point cloud.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_retrieve_bodies(struct SL_Bodies *bodies, struct SL_BodyTrackingFusionRuntimeParameters *rt, struct SL_CameraIdentifier uuid, enum SL_FUSION_REFERENCE_FRAME reference_frame)
retrieves a list of bodies (in SL_Bodies class type) seen by all cameras and merged as if it was seen...
INTERFACE_API enum SL_ERROR_CODE sl_set_roi_for_aec_agc(int camera_id, enum SL_SIDE side, struct SL_Rect *roi, bool reset)
Sets the region of interest for automatic exposure/gain computation.
INTERFACE_API struct SL_InitParameters * sl_get_init_parameters(int camera_id)
Returns the SL_InitParameters used.
INTERFACE_API int sl_generate_unique_id(char *uuid)
Generate a UUID like unique id to help identify and track AI detections.
INTERFACE_API int sl_mat_write(void *ptr, const char *file_path)
Writes the Mat into a file as an image. Only works if Mat has access to MEM_CPU.
INTERFACE_API int sl_get_sensors_data_batch(int camera_id, struct SL_SensorsData **data)
Retrieves all SL_SensorsData associated to most recent grabbed frame in the specified COORDINATE_SYST...
INTERFACE_API int sl_mat_clone(void *ptr, void *ptr_source)
Duplicates a matrix by copying all its data into a new one (deep copy).
INTERFACE_API int sl_update_whole_mesh(int camera_id, int *nb_vertices, int *nb_triangles)
Updates the internal version of the whole mesh and returns the size of its data.
INTERFACE_API int sl_get_sensors_data(int camera_id, struct SL_SensorsData *data, enum SL_TIME_REFERENCE time_reference)
Gets SL_SensorsData (IMU, magnetometer, barometer) at a specific time reference.
INTERFACE_API struct SL_HealthStatus * sl_get_health_status(int camera_id)
Gets the current status of the camera.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_unsubscribe(struct SL_CameraIdentifier *uuid)
Remove the specified camera from data provider.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_get_process_metrics(struct SL_FusionMetrics *metrics)
get the stats of a given camera in the Fusion API side It can be the received FPS,...
INTERFACE_API int sl_mat_set_to_float(void *ptr, float value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_F32_C1 with the given value.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_enable_body_tracking(struct SL_BodyTrackingFusionParameters *params)
enables Object detection fusion module
INTERFACE_API int sl_mat_set_to_uchar2(void *ptr, struct SL_Uchar2 value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_U8_C2 with the given value.
INTERFACE_API float sl_get_camera_fps(int camera_id)
Returns the camera FPS.
INTERFACE_API int sl_get_position_array(int camera_id, float *pose, enum SL_REFERENCE_FRAME reference_frame)
Gets the position of the camera and the current state of the ZED Tracking as a float array (4x4).
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_geo_to_enu(struct SL_LatLng *in, struct SL_ENU *out)
Convert a global world coordinate to a ENU position expressed inside the Fusion coordinate system.
INTERFACE_API int sl_blob_from_images(void **image_in, int nb_images, void *tensor_out, struct SL_Resolution resolution_out, float scalefactor, struct SL_Vector3 mean, struct SL_Vector3 stddev, bool keep_aspect_ratio, bool swap_RB_channels, void *stream)
Convert a list of images into a GPU Tensor in planar channel configuration (NCHW),...
INTERFACE_API int sl_convert_color(void *mat1, void *mat2, bool swap_RB_channels, bool remove_alpha_channels, enum SL_MEM memory, void *stream)
Convert the color channels of the Mat into another Mat This methods works only on 8U_C4 if remove_alp...
INTERFACE_API int sl_mat_get_step(void *ptr, enum SL_MEM mem)
Returns the memory step in number of elements (size in one pixel row).
INTERFACE_API int sl_convert_image(void *image_in_ptr, void *image_signed_ptr, void *stream)
Convert Image format from Unsigned char to Signed char, designed for Unreal Engine pipeline,...
INTERFACE_API int sl_mat_update_cpu_from_gpu(void *ptr)
Copies data from the GPU to the CPU, if possible.
INTERFACE_API void sl_fusion_close()
Close Multi Camera instance.
INTERFACE_API void sl_pause_svo_reading(int camera_id, bool status)
Pauses or resumes SVO reading.
INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_geo_to_camera(struct SL_LatLng *in, struct SL_PoseData *out, bool radian)
Convert latitude / longitude into position in sl::Fusion coordinate system.
INTERFACE_API void sl_close_camera(int camera_id)
Close an opened camera and disable the textures.
INTERFACE_API struct SL_StreamingParameters * sl_get_streaming_parameters(int camera_id)
Returns the SL_StreamingParameters used.
INTERFACE_API struct SL_BodyTrackingParameters * sl_get_body_tracking_parameters(int camera_id)
Returns the SL_BodyTrackingParameters used.
INTERFACE_API int sl_reset_positional_tracking_with_offset(int camera_id, struct SL_Quaternion rotation, struct SL_Vector3 translation, struct SL_Quaternion target_quaternion, struct SL_Vector3 target_translation)
Resets the tracking with an offset.
INTERFACE_API void sl_mat_swap(void *ptr_1, void *ptr_2)
Swaps the content of the provided matrix (only swaps the pointers, no data copy).
INTERFACE_API int sl_mat_get_width(void *ptr)
Returns the width of the matrix.
INTERFACE_API int sl_mat_get_data_type(void *ptr)
Returns the format of the matrix.
INTERFACE_API int sl_mat_set_value_uchar2(void *ptr, int col, int row, struct SL_Uchar2 value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_U8_C2.
INTERFACE_API enum SL_ERROR_CODE sl_ingest_data_into_svo(int camera_id, struct SL_SVOData *data)
Ingests SL_SVOData in a SVO file.
INTERFACE_API bool sl_apply_texture(int camera_id, int *nb_vertices_per_submesh, int *nb_triangles_per_submesh, int *nb_updated_submeshes, int *updated_indices, int *nb_vertices_tot, int *nb_triangles_tot, int *textures_size, const int max_submesh)
Applies the scanned texture onto the internal scanned mesh.
INTERFACE_API int sl_blob_from_image(void *image_in, void *tensor_out, struct SL_Resolution resolution_out, float scalefactor, struct SL_Vector3 mean, struct SL_Vector3 stddev, bool keep_aspect_ratio, bool swap_RB_channels, void *stream)
Convert an image into a GPU Tensor in planar channel configuration (NCHW), ready to use for deep lear...
INTERFACE_API int sl_mat_set_from(void *ptr, void *ptr_source, enum SL_COPY_TYPE copy_type)
Copies data from another matrix into this one (deep copy).
INTERFACE_API bool sl_mat_is_init(void *ptr)
Returns whether the matrix is initialized or not.
INTERFACE_API void sl_fusion_disable_body_tracking()
Disable the object detection module.
INTERFACE_API enum SL_GNSS_FUSION_STATUS sl_fusion_get_geo_pose(struct SL_GeoPose *pose, bool radian)
returns the current GeoPose
INTERFACE_API int sl_reboot(int sn, bool full_reboot)
Performs a hardware reset of the ZED 2 and the ZED 2i.
INTERFACE_API struct SL_PlaneData * sl_find_floor_plane(int camera_id, struct SL_Quaternion *reset_quaternion, struct SL_Vector3 *reset_translation, struct SL_Quaternion prior_rotation, struct SL_Vector3 prior_translation)
Detect the floor plane of the scene.
INTERFACE_API int sl_mat_set_to_float3(void *ptr, struct SL_Vector3 value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_F32_C3 with the given value.
INTERFACE_API int sl_open_camera_from_stream(int camera_id, struct SL_InitParameters *init_parameters, const char *ip, int stream_port, const char *output_file, const char *opt_settings_path, const char *opencv_calib_path)
Opens the ZED camera from the provided SL_InitParameters using its IP and stream port.
INTERFACE_API int sl_update_objects_batch(int camera_id, int *nb_batches)
Updates the internal batch of detected objects.
INTERFACE_API float sl_get_depth_min_range_value(int camera_id)
Gets the depth min value from InitParameters (see SL_InitParameters::depth_minimum_distance).
INTERFACE_API int sl_get_area_export_state(int camera_id)
Returns the state of the spatial memory export process.
INTERFACE_API int sl_reset_positional_tracking(int camera_id, struct SL_Quaternion rotation, struct SL_Vector3 translation)
Resets the tracking, and re-initializes the position with the given pose.
INTERFACE_API bool sl_is_positional_tracking_enabled(int camera_id)
Tells if the tracking module is enabled.
INTERFACE_API struct SL_RecordingStatus * sl_get_recording_status(int camera_id)
Get the recording information.
int INTERFACE_API sl_get_height(int camera_id)
Returns the height of the current image.
INTERFACE_API int sl_open_camera(int camera_id, struct SL_InitParameters *init_parameters, const unsigned int serial_number, const char *path_svo, const char *ip, int stream_port, int gmsl_port, const char *output_file, const char *opt_settings_path, const char *opencv_calib_path)
Opens the ZED camera from the provided SL_InitParameters.
INTERFACE_API int sl_get_sensors_firmware(int camera_id)
Gets the sensor module current firmware version.
INTERFACE_API bool sl_is_HDR_available(enum SL_RESOLUTION r, enum SL_MODEL m)
Check if a resolution for a given camera model is available for HDR.
INTERFACE_API int sl_retrieve_whole_mesh(int camera_id, float *vertices, int *triangles, unsigned char *colors, float *uvs, unsigned char *texture_ptr)
Retrieves the full mesh. Call update_mesh before calling this. Vertex and triangles arrays must be at...
INTERFACE_API void sl_get_streaming_device_list(struct SL_StreamingProperties streaming_device_list[MAX_CAMERA_PLUGIN], int *nb_devices)
List all the streaming devices with their associated information.
INTERFACE_API int sl_mat_set_value_uchar4(void *ptr, int col, int row, struct SL_Uchar4 value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_U8_C4.
INTERFACE_API int sl_open_camera_from_svo_file(int camera_id, struct SL_InitParameters *init_parameters, const char *path_svo, const char *output_file, const char *opt_settings_path, const char *opencv_calib_path)
Opens the ZED camera from the provided SL_InitParameters using an SVO file.
INTERFACE_API int sl_retrieve_measure(int camera_id, void *measure_ptr, enum SL_MEASURE type, enum SL_MEM mem, int width, int height, void *custream)
Retrieves a measure texture from the ZED SDK.
INTERFACE_API int sl_enable_object_detection(int camera_id, struct SL_ObjectDetectionParameters *object_detection_parameters)
Initializes and starts object detection module.
INTERFACE_API int sl_mat_set_to_float2(void *ptr, struct SL_Vector2 value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_F32_C2 with the given value.
INTERFACE_API bool sl_filter_whole_mesh(int camera_id, enum SL_MESH_FILTER filter_params, int *nb_vertices, int *nb_triangles)
Filters a mesh to removes triangles while still preserving its overall shaper (though less accurate).
INTERFACE_API bool sl_apply_whole_texture(int camera_id, int *nb_vertices, int *nb_triangles, int *texture_size)
Applies the scanned texture onto the internal scanned mesh.
INTERFACE_API int sl_mat_set_value_uchar3(void *ptr, int col, int row, struct SL_Uchar3 value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_U8_C3.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_enu_to_geo(struct SL_ENU *in, struct SL_LatLng *out)
Convert a ENU position expressed inside the Fusion coordinate system to a global world coordinate.
INTERFACE_API enum SL_POSITIONAL_TRACKING_STATE sl_fusion_get_current_gnss_data(struct SL_GNSSData *data, bool radian)
returns the current GNSS data
INTERFACE_API int sl_get_position_data(int camera_id, struct SL_PoseData *poseData, enum SL_REFERENCE_FRAME reference_frame)
Gets the current position of the camera and state of the tracking, filling a SL_PoseData struck usefu...
INTERFACE_API void sl_unload_instance(int camera_id)
Forces unload of one instance.
INTERFACE_API struct SL_Resolution sl_mat_get_resolution(void *ptr)
Returns the resolution (width and height) of the matrix.
INTERFACE_API int sl_mat_update_gpu_from_cpu(void *ptr)
Copies data from the CPU to the GPU, if possible.
INTERFACE_API struct SL_SensorsConfiguration * sl_get_sensors_configuration(int camera_id)
Gets the Sensors configuration.
INTERFACE_API int sl_mat_set_to_uchar3(void *ptr, struct SL_Uchar3 value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_U8_C3 with the given value.
INTERFACE_API int sl_extract_whole_spatial_map(int camera_id)
Extracts the current spatial map from the spatial mapping process.
INTERFACE_API void sl_fusion_get_geo_tracking_calibration(struct SL_Vector3 *translation, struct SL_Quaternion *rotation)
Get the calibration found between VIO and GNSS.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_retrieve_measure(void *mat, struct SL_CameraIdentifier *uuid, enum SL_MEASURE measure, int width, int height, enum SL_FUSION_REFERENCE_FRAME reference_frame)
Returns the current measure of the specified camera, the data is synchronized.
INTERFACE_API enum SL_ERROR_CODE sl_set_camera_settings_min_max(int camera_id, enum SL_VIDEO_SETTINGS mode, int min, int max)
Sets the range values of the requested camera setting (gain, brightness, hue, exposure,...
INTERFACE_API int sl_open_camera_from_camera_id(int camera_id, struct SL_InitParameters *init_parameters, const char *output_file, const char *opt_settings_path, const char *opencv_calib_path)
Opens the ZED camera from the provided SL_InitParameters using its camera ID.
INTERFACE_API bool sl_save_point_cloud(int c_id, const char *filename, enum SL_MESH_FILE_FORMAT format)
Saves the scanned point cloud in a specific file format.
INTERFACE_API int sl_update_mesh(int camera_id, int *nb_vertices_per_submesh, int *nb_triangles_per_submesh, int *nb_submeshes, int *updated_indices, int *nb_vertices_tot, int *nb_triangles_tot, const int max_submesh)
Updates the internal version of the mesh and returns the sizes of the meshes.
INTERFACE_API int sl_mat_get_pixel_bytes(void *ptr)
Returns the size of one pixel in bytes.
INTERFACE_API int sl_mat_set_value_uchar(void *ptr, int col, int row, unsigned char value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_U8_C1.
INTERFACE_API int sl_mat_get_value_uchar2(void *ptr, int col, int row, struct SL_Uchar2 *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_U8_C2.
INTERFACE_API void sl_fusion_disable_positional_tracking()
disable the positional tracking
INTERFACE_API float sl_get_depth_max_range_value(int camera_id)
Gets the depth max value from InitParameters (see SL_InitParameters::depth_maximum_distance).
INTERFACE_API enum SL_ERROR_CODE sl_retrieve_svo_data(int camera_id, char *key, int nb_data, struct SL_SVOData **data, unsigned long long ts_begin, unsigned long long ts_end)
Retrieves SVOData from an SVO file. The user is reponsible for correctly allocating the size of the d...
INTERFACE_API int sl_get_mesh_request_status_async(int camera_id)
Returns the spatial map generation status.
INTERFACE_API int sl_retrieve_chunks(int camera_id, float *vertices, int *triangles, unsigned char *colors, float *uvs, unsigned char *texture_ptr, const int max_submesh)
Retrieves all chunks of the full mesh.
INTERFACE_API CUcontext sl_get_cuda_context(int camera_id)
Gets the Camera-created CUDA context for sharing it with other CUDA-capable libraries.
INTERFACE_API unsigned long long sl_get_image_timestamp(int camera_id)
Get the timestamp at the time the frame has been extracted from USB stream.
INTERFACE_API int sl_convert_hitplane_to_mesh(int camera_id, float *vertices, int *triangles, int *nb_vertices_tot, int *nb_triangles_tot)
Using data from a detected hit plane, updates supplied vertex and triangles arrays with data needed t...
INTERFACE_API int sl_get_region_of_interest(int camera_id, void *roi_mask, int width, int height, enum SL_MODULE module)
Get the previously set or computed region of interest.
INTERFACE_API int sl_mat_set_to_float4(void *ptr, struct SL_Vector4 value, enum SL_MEM mem)
Fills the matrix of type SL_MAT_TYPE_F32_C4 with the given value.
INTERFACE_API int sl_get_zed_serial(int camera_id)
Gets the ZED Serial Number.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_get_pose(struct SL_CameraIdentifier *uuid, struct SL_Vector3 *pose_translation, struct SL_Quaternion *pose_rotation)
Get the specified camera position inside fusion WORLD.
INTERFACE_API void sl_pause_spatial_mapping(int camera_id, bool status)
INTERFACE_API void sl_fusion_read_configuration_file(const char *json_config_filename, enum SL_COORDINATE_SYSTEM coord_system, enum SL_UNIT unit, struct SL_FusionConfiguration configs[MAX_FUSED_CAMERAS], int *nb_cameras)
Read a Configuration JSON file to configure a fusion process.
INTERFACE_API enum SL_POSITIONAL_TRACKING_STATE sl_fusion_get_position(struct SL_PoseData *pose, enum SL_REFERENCE_FRAME reference_frame, struct SL_CameraIdentifier *uuid, enum SL_POSITION_TYPE retrieve_type)
Get the Fused Position of the camera system.
INTERFACE_API int sl_get_input_type(int camera_id)
Gets the input type (see SL_INPUT_TYPE).
INTERFACE_API int sl_mat_get_step_bytes(void *ptr, enum SL_MEM mem)
Returns the memory step in bytes (size of one pixel row).
INTERFACE_API int sl_enable_streaming(int camera_id, enum SL_STREAMING_CODEC codec, unsigned int bitrate, unsigned short port, int gop_size, int adaptative_bitrate, int chunk_size, int target_framerate)
Creates a streaming pipeline.
INTERFACE_API unsigned long long sl_get_current_timestamp(int camera_id)
Get the current timestamp at the time the function is called.
INTERFACE_API int sl_optimize_AI_model(enum SL_AI_MODELS model, int gpu_id)
Optimize the requested model, possible download if the model is not present on the host.
INTERFACE_API enum SL_REGION_OF_INTEREST_AUTO_DETECTION_STATE sl_get_region_of_interest_auto_detection_status(int camera_id)
Return the status of the automatic Region of Interest Detection The automatic Region of Interest Dete...
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_enable_positional_tracking(struct SL_PositionalTrackingFusionParameters *params)
enable positional tracking fusion.
INTERFACE_API int sl_retrieve_mesh(int camera_id, float *vertices, int *triangles, unsigned char *colors, float *uvs, unsigned char *texture_ptr, const int max_submeshes)
Retrieves all chunks of the current mesh.
INTERFACE_API int sl_mat_get_height(void *ptr)
Returns the height of the matrix.
INTERFACE_API int sl_set_object_detection_runtime_parameters(int camera_id, struct SL_ObjectDetectionRuntimeParameters object_detection_parameters, unsigned int instance_id)
Set the Object detection module instance runtime parameters By default the object detection module wi...
INTERFACE_API int sl_convert_floorplane_to_mesh(int camera_id, float *vertices, int *triangles, int *nb_vertices_tot, int *nb_triangles_tot)
Using data from a detected floor plane, updates supplied vertex and triangles arrays with data needed...
INTERFACE_API enum SL_ERROR_CODE sl_get_camera_settings(int c_id, enum SL_VIDEO_SETTINGS mode, int *value)
Returns the current value of the requested camera setting (gain, brightness, hue, exposure,...
INTERFACE_API int sl_grab(int camera_id, struct SL_RuntimeParameters *runtime)
Grabs the latest images from the camera.
INTERFACE_API int sl_mat_get_value_float2(void *ptr, int col, int row, struct SL_Vector2 *value, enum SL_MEM mem)
Returns the value of a specific point in the matrix of type SL_MAT_TYPE_F32_C2.
INTERFACE_API int sl_enable_spatial_mapping(int camera_id, struct SL_SpatialMappingParameters *mapping_param)
Initializes and starts the spatial mapping processes.
INTERFACE_API enum SL_ERROR_CODE sl_get_roi_for_aec_agc(int id, enum SL_SIDE side, struct SL_Rect *roi)
Gets the region of interest for automatic exposure/gain computation.
INTERFACE_API void sl_get_camera_imu_transform(int camera_id, struct SL_Vector3 *translation, struct SL_Quaternion *rotation)
Gets the IMU to the left camera transform matrix.
INTERFACE_API int sl_set_imu_prior_orientation(int camera_id, struct SL_Quaternion rotation)
Set an optional IMU orientation hint that will be used to assist the tracking during the next sl_grab...
INTERFACE_API int sl_mat_set_value_float2(void *ptr, int col, int row, struct SL_Vector2 value, enum SL_MEM mem)
Sets a value to a specific point in the matrix of type SL_MAT_TYPE_F32_C2.
INTERFACE_API void sl_update_self_calibration(int camera_id)
Performs a new self calibration process.
INTERFACE_API enum SL_FUSION_ERROR_CODE sl_fusion_ingest_gnss_data(struct SL_GNSSData *gnss_data, bool radian)
Add GNSS that will be used by fusion for computing fused pose.
INTERFACE_API void sl_get_svo_data_keys(int camera_id, int nb_keys, char **keys)
Gets the external channels that can be retrieved from the SVO file. The user is reponsible for correc...
INTERFACE_API int sl_get_number_zed_connected()
Gets the number of zed connected.
INTERFACE_API int sl_get_positional_tracking_landmarks(int camera_id, struct SL_Landmark **landmarks, uint32_t *count)
Get the current positional tracking landmarks. \Note the landmarks array has to be freed by the user.
int INTERFACE_API sl_get_width(int camera_id)
Returns the width of the current image.
INTERFACE_API int sl_get_sensors_data_batch_count(int camera_id, int *count)
Retrieves the size of the imu batch array. Needs to be called before sl_get_sensors_data_batch().
INTERFACE_API enum SL_SPATIAL_MAPPING_STATE sl_get_spatial_mapping_state(int camera_id)
Returns the current spatial mapping state.
INTERFACE_API void * sl_mat_create_new_empty()
Creates an empty matrix.
INTERFACE_API int sl_read(int camera_id)
Read the latest images and IMU from the camera and rectify the images.