feat: add backward-compatible open() overload for local cameras
Add overload to maintain backward compatibility with existing code that uses local USB cameras or SVO files. New API: // For network stream cameras open(const std::string& ip, int port, Trigger* ref, int sdk_gpu_id) // For local cameras (USB, SVO, etc.) - backward compatible open(sl::InputType input, Trigger* ref, int sdk_gpu_id) This allows the same ClientPublisher class to work with both: - Remote cameras via streaming (new use case) - Local cameras via USB/SVO (original use case) Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
@ -54,8 +54,12 @@ public:
|
|||||||
ClientPublisher();
|
ClientPublisher();
|
||||||
~ClientPublisher();
|
~ClientPublisher();
|
||||||
|
|
||||||
// Open camera from stream (IP:port) instead of local input
|
// Open camera from stream (IP:port) - for network camera streaming
|
||||||
bool open(const std::string& ip, int port, Trigger* ref, int sdk_gpu_id);
|
bool open(const std::string& ip, int port, Trigger* ref, int sdk_gpu_id);
|
||||||
|
|
||||||
|
// Open local camera (USB/serial/SVO) - backward compatible overload
|
||||||
|
bool open(sl::InputType input, Trigger* ref, int sdk_gpu_id);
|
||||||
|
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
void setStartSVOPosition(unsigned pos);
|
void setStartSVOPosition(unsigned pos);
|
||||||
|
|||||||
@ -57,6 +57,53 @@ bool ClientPublisher::open(const std::string& ip, int port, Trigger* ref, int sd
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ClientPublisher::open(sl::InputType input, Trigger* ref, int sdk_gpu_id) {
|
||||||
|
|
||||||
|
p_trigger = ref;
|
||||||
|
|
||||||
|
sl::InitParameters init_parameters;
|
||||||
|
init_parameters.depth_mode = sl::DEPTH_MODE::NEURAL;
|
||||||
|
init_parameters.input = input;
|
||||||
|
init_parameters.coordinate_units = sl::UNIT::METER;
|
||||||
|
init_parameters.depth_stabilization = 30;
|
||||||
|
init_parameters.sdk_gpu_id = sdk_gpu_id;
|
||||||
|
|
||||||
|
auto state = zed.open(init_parameters);
|
||||||
|
if (state != sl::ERROR_CODE::SUCCESS)
|
||||||
|
{
|
||||||
|
std::cout << "Error opening local camera: " << state << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
serial = zed.getCameraInformation().serial_number;
|
||||||
|
p_trigger->states[serial] = false;
|
||||||
|
|
||||||
|
// in most cases in body tracking setup, the cameras are static
|
||||||
|
sl::PositionalTrackingParameters positional_tracking_parameters;
|
||||||
|
positional_tracking_parameters.set_as_static = true;
|
||||||
|
|
||||||
|
state = zed.enablePositionalTracking(positional_tracking_parameters);
|
||||||
|
if (state != sl::ERROR_CODE::SUCCESS)
|
||||||
|
{
|
||||||
|
std::cout << "Error enabling positional tracking: " << state << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
sl::BodyTrackingParameters body_tracking_parameters;
|
||||||
|
body_tracking_parameters.detection_model = sl::BODY_TRACKING_MODEL::HUMAN_BODY_ACCURATE;
|
||||||
|
body_tracking_parameters.body_format = sl::BODY_FORMAT::BODY_18;
|
||||||
|
body_tracking_parameters.enable_body_fitting = false;
|
||||||
|
body_tracking_parameters.enable_tracking = false;
|
||||||
|
state = zed.enableBodyTracking(body_tracking_parameters);
|
||||||
|
if (state != sl::ERROR_CODE::SUCCESS)
|
||||||
|
{
|
||||||
|
std::cout << "Error enabling body tracking: " << state << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void ClientPublisher::start()
|
void ClientPublisher::start()
|
||||||
{
|
{
|
||||||
if (zed.isOpened()) {
|
if (zed.isOpened()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user