From a77ba959c59a9dba839c0784bcfdf43959d56225 Mon Sep 17 00:00:00 2001 From: Fabien Servant Date: Fri, 10 Jan 2025 15:29:49 +0100 Subject: [PATCH] Frames with poses are keyframes --- src/aliceVision/keyframe/KeyframeSelector.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/aliceVision/keyframe/KeyframeSelector.cpp b/src/aliceVision/keyframe/KeyframeSelector.cpp index aa7bb2b298..9fbab98efc 100644 --- a/src/aliceVision/keyframe/KeyframeSelector.cpp +++ b/src/aliceVision/keyframe/KeyframeSelector.cpp @@ -1252,6 +1252,8 @@ bool KeyframeSelector::writeSfMData(const std::string& mediaPath, bool KeyframeSelector::writeSfMDataFromSfMData(const std::string& mediaPath) { + auto& keyframesPoses = _outputSfmKeyframes.getPoses(); + auto& keyframesViews = _outputSfmKeyframes.getViews(); auto& framesViews = _outputSfmFrames.getViews(); @@ -1292,6 +1294,18 @@ bool KeyframeSelector::writeSfMDataFromSfMData(const std::string& mediaPath) { viewId = views[i]->getViewId(); intrinsicId = views[i]->getIntrinsicId(); + IndexT poseId = views[i]->getPoseId(); + + bool hasPose = inputSfm.isPoseAndIntrinsicDefined(viewId); + if (hasPose) + { + ALICEVISION_LOG_INFO("A fully calibrated view (Id:" << viewId << ") is moved to keyframes"); + _selectedFrames[i] = '1'; + + //Make sure to keep the pose + keyframesPoses.emplace(poseId, inputSfm.getPoses().at(poseId)); + } + if (_selectedFrames[i] == '1') { keyframesViews.emplace(viewId, views[i]);