std::shared_ptr<CameraDriverInterface> GetDevice(const Uri& uri) { const Uri input_uri = Uri(uri.url); // Create input camera std::shared_ptr<CameraDriverInterface> input = DeviceRegistry<hal::CameraDriverInterface>::I().Create(input_uri); std::string filename = ExpandTildePath( uri.properties.Get<std::string>("file", "cameras.xml") ); if(!FileExists(filename)) { std::string dir = input->GetDeviceProperty(hal::DeviceDirectory); while(!dir.empty() && !FileExists(dir+"/"+filename)) { dir = DirUp(dir); } filename = (dir.empty() ? "" : dir + "/") + filename; } calibu::CameraRig rig = calibu::ReadXmlRig( filename ); if(rig.cameras.size() != 2) { throw DeviceException("Unable to find 2 cameras in file '" + filename + "'"); } RectifyDriver* rectify = new RectifyDriver( input, rig ); return std::shared_ptr<CameraDriverInterface>( rectify ); }
std::shared_ptr<CameraDriverInterface> GetDevice(const Uri& uri) { const Uri input_uri = Uri(uri.url); // Create input camera std::shared_ptr<CameraDriverInterface> input = DeviceRegistry<hal::CameraDriverInterface>::I().Create(input_uri); std::string filename = ExpandTildePath( uri.properties.Get<std::string>("file", "cameras.xml") ); if(!FileExists(filename)) { std::string dir = input->GetDeviceProperty(hal::DeviceDirectory); while(!dir.empty() && !FileExists(dir+"/"+filename)) { dir = DirUp(dir); } filename = (dir.empty() ? "" : dir + "/") + filename; } std::shared_ptr<calibu::Rig<double>> rig = calibu::ReadXmlRig( filename ); UndistortDriver* pDriver = new UndistortDriver( input, rig ); return std::shared_ptr<CameraDriverInterface>( pDriver ); }
std::string ProtoReaderDriver::GetDeviceProperty(const std::string& sProperty) { if(sProperty == hal::DeviceDirectory) { return DirUp(m_reader.GetFilename()); } return std::string(); }