Я использую API, который возвращает глубину буфера в байтах для пикселей. Возвращенными данными являются Vector . Чтобы распаковать его в вектор с плавающей точкой, я сделал это: < /p>
Я использую API, который возвращает глубину буфера в байтах для пикселей. Возвращенными данными являются Vector . Чтобы распаковать его в вектор с плавающей точкой, я сделал это: < /p> [code]auto [depthBytes, resolution] = sim.getVisionSensorDepth(CameraHandle,1); int width = static_cast(resolution[0]); int hight = static_cast(resolution[1]);
for (int i(0); i < depth_in_float.size(); ++i) cout [code]Return values depth: the depth buffer. Use sim.unpackFloatTable to obtain an array of values < /code> Функция unpackfloattable < /code> ожидает < /p>
Данные: строка (значения между 0 и 255), который содержит упакованные номера с плавающей точкой < /p> < /blockquote> , к сожалению, документация их api для CSt-let-le Date. Тем не менее, я могу посмотреть на источник их функции, который имеет эту реализацию. < /P> std::tuple sim::getVisionSensorDepth(int64_t sensorHandle, std::optional options, std::optional pos, std::optional size) { bool _brk = false; json _args(json_array_arg); _args.push_back(sensorHandle); if(options) { if(_brk) throw std::runtime_error("no gaps allowed"); else _args.push_back(*options); } else _brk = true; if(pos) { if(_brk) throw std::runtime_error("no gaps allowed"); else _args.push_back(*pos); } else _brk = true; if(size) { if(_brk) throw std::runtime_error("no gaps allowed"); else _args.push_back(*size); } else _brk = true; auto _ret = this->_client->call("sim.getVisionSensorDepth", _args); return std::make_tuple(_ret[0].as(), _ret[1].as()); } < /code> К счастью, я обнаружил, что у них есть функция, которая распаковывает строку в номера с плавающей точкой, которая имеет эту реализацию < /p> std::vector sim::unpackFloatTable(std::vector data, std::optional startFloatIndex, std::optional floatCount, std::optional additionalByteOffset) { bool _brk = false; json _args(json_array_arg); _args.push_back(bin(data)); if(startFloatIndex) { if(_brk) throw std::runtime_error("no gaps allowed"); else _args.push_back(*startFloatIndex); } else _brk = true; if(floatCount) { if(_brk) throw std::runtime_error("no gaps allowed"); else _args.push_back(*floatCount); } else _brk = true; if(additionalByteOffset) { if(_brk) throw std::runtime_error("no gaps allowed"); else _args.push_back(*additionalByteOffset); } else _brk = true; auto _ret = this->_client->call("sim.unpackFloatTable", _args); return _ret[0].as(); } [/code] Хотя функция с именем unpackfloattable , возвращает Vector . Эта функция выполняет задание.