From bcac262234d39e61dcf315857ad8e5378c4f77d0 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Tue, 4 Aug 2015 11:35:55 -0400 Subject: [PATCH] DatabaseViewer -> "Extract images...": support extraction of depth images --- guilib/src/DatabaseViewer.cpp | 45 ++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/guilib/src/DatabaseViewer.cpp b/guilib/src/DatabaseViewer.cpp index a510c012..0e48c342 100644 --- a/guilib/src/DatabaseViewer.cpp +++ b/guilib/src/DatabaseViewer.cpp @@ -895,7 +895,7 @@ void DatabaseViewer::extractImages() { UERROR("Cannot save calibration file, database name is empty!"); } - else + else if(data.stereoCameraModel().isValid()) { std::string cameraName = uSplit(databaseFileName_, '.').front(); StereoCameraModel model( @@ -925,6 +925,43 @@ void DatabaseViewer::extractImages() } } } + else if(!data.imageRaw().empty()) + { + if(!data.depthRaw().empty()) + { + QDir dir; + dir.mkdir(QString("%1/rgb").arg(path)); + dir.mkdir(QString("%1/depth").arg(path)); + } + + if(databaseFileName_.empty()) + { + UERROR("Cannot save calibration file, database name is empty!"); + } + else if(data.cameraModels().size() > 1) + { + UERROR("Only one camera calibration can be saved at this time (%d detected)", (int)data.cameraModels().size()); + } + else if(data.cameraModels().size() == 1 && data.cameraModels().front().isValid()) + { + std::string cameraName = uSplit(databaseFileName_, '.').front(); + CameraModel model(cameraName, + data.imageRaw().size(), + data.cameraModels().front().K(), + data.cameraModels().front().D(), + data.cameraModels().front().R(), + data.cameraModels().front().P(), + data.cameraModels().front().localTransform()); + if(model.save(path.toStdString())) + { + UINFO("Saved calibration \"%s\"", (path.toStdString()+"/"+cameraName).c_str()); + } + else + { + UERROR("Failed saving calibration \"%s\"", (path.toStdString()+"/"+cameraName).c_str()); + } + } + } } for(int i=0; i