diff --git a/src/base/reconstruction.cc b/src/base/reconstruction.cc index 5674363..794b994 100755 --- a/src/base/reconstruction.cc +++ b/src/base/reconstruction.cc @@ -952,7 +952,7 @@ void Reconstruction::ImportPLY(const std::string& path) { } } -bool Reconstruction::ExportNVM(const std::string& path) const { +bool Reconstruction::ExportNVM(const std::string& path, const std::string& image_path) const { std::ofstream file(path, std::ios::trunc); CHECK(file.is_open()) << path; @@ -979,7 +979,13 @@ bool Reconstruction::ExportNVM(const std::string& path) const { -1 * camera.Params(SimpleRadialCameraModel::extra_params_idxs[0]); const Eigen::Vector3d proj_center = image.ProjectionCenter(); - file << image.Name() << " "; + //fix white space in nvm path acordingly + std::string image_path_nvm = image_path ; + std::transform(image_path_nvm.begin(), image_path_nvm.end(), image_path_nvm.begin(), [](char ch) { + return ch == ' ' ? '"' : ch; + }); + + file << JoinPaths(image_path_nvm, image.Name()) << " "; file << f << " "; file << image.Qvec(0) << " "; file << image.Qvec(1) << " "; diff --git a/src/base/reconstruction.h b/src/base/reconstruction.h index 7cb5ffb..c2b1d84 100755 --- a/src/base/reconstruction.h +++ b/src/base/reconstruction.h @@ -229,7 +229,7 @@ class Reconstruction { void ImportPLY(const std::string& path); // Export to other data formats. - bool ExportNVM(const std::string& path) const; + bool ExportNVM(const std::string& path,const std::string& image_path) const; bool ExportBundler(const std::string& path, const std::string& list_path) const; void ExportPLY(const std::string& path) const; diff --git a/src/exe/model_converter.cc b/src/exe/model_converter.cc index 9e14d73..c5bfcbf 100755 --- a/src/exe/model_converter.cc +++ b/src/exe/model_converter.cc @@ -43,7 +43,7 @@ int main(int argc, char** argv) { } else if (output_type == "txt") { reconstruction.WriteText(output_path); } else if (output_type == "nvm") { - reconstruction.ExportNVM(output_path); + reconstruction.ExportNVM(output_path,*options.image_path); } else if (output_type == "bundler") { reconstruction.ExportBundler(output_path + ".bundle.out", output_path + ".list.txt"); diff --git a/src/ui/main_window.cc b/src/ui/main_window.cc index 09d8020..48c1177 100755 --- a/src/ui/main_window.cc +++ b/src/ui/main_window.cc @@ -855,7 +855,7 @@ void MainWindow::ExportAs() { const Reconstruction& reconstruction = reconstruction_manager_.Get(SelectedReconstructionIdx()); if (filter == "NVM (*.nvm)") { - reconstruction.ExportNVM(export_path); + reconstruction.ExportNVM(export_path,*options_.image_path); } else if (filter == "Bundler (*.out)") { reconstruction.ExportBundler(export_path, export_path + ".list.txt"); } else if (filter == "PLY (*.ply)") {