Skip to content

Commit 56cd719

Browse files
authored
Merge pull request #2157 from alicevision/fix/loadFeaturesPerDescPerView
[sfm] `loadFeaturesPerDescPerView` can ignore non-existing views
2 parents 8fac66f + 37fbf0c commit 56cd719

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

src/aliceVision/sfm/pipeline/regionsIO.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ std::unique_ptr<feature::Regions> loadFeatures(const std::vector<std::string>& f
138138
bool loadFeaturesPerDescPerView(std::vector<std::vector<std::unique_ptr<feature::Regions>>>& featuresPerDescPerView,
139139
const std::vector<IndexT>& viewIds,
140140
const std::vector<std::string>& folders,
141-
const std::vector<feature::EImageDescriberType>& imageDescriberTypes)
141+
const std::vector<feature::EImageDescriberType>& imageDescriberTypes,
142+
bool errorOnMissing)
142143
{
143144
if (folders.empty())
144145
{
@@ -160,7 +161,9 @@ bool loadFeaturesPerDescPerView(std::vector<std::vector<std::unique_ptr<feature:
160161
imageDescribers.resize(imageDescriberTypes.size());
161162

162163
for (std::size_t i = 0; i < imageDescriberTypes.size(); ++i)
164+
{
163165
imageDescribers.at(i) = createImageDescriber(imageDescriberTypes.at(i));
166+
}
164167

165168
featuresPerDescPerView.resize(imageDescribers.size());
166169

@@ -181,13 +184,14 @@ bool loadFeaturesPerDescPerView(std::vector<std::vector<std::unique_ptr<feature:
181184
catch (const std::exception& e)
182185
{
183186
const feature::EImageDescriberType d = imageDescribers.at(descIdx)->getDescriberType();
187+
featuresPerView.at(viewIdx) = nullptr;
184188

185-
#pragma omp critical
189+
if (errorOnMissing)
186190
{
187191
ALICEVISION_LOG_ERROR("Cannot load features for View " << viewIds.at(viewIdx) << " for describer type " << feature::EImageDescriberType_enumToString(d) << ".");
188192
ALICEVISION_LOG_ERROR(e.what());
189-
}
190-
loadingSuccess = false;
193+
loadingSuccess = false;
194+
}
191195
}
192196
}
193197
}

src/aliceVision/sfm/pipeline/regionsIO.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ std::unique_ptr<feature::Regions> loadFeatures(const std::vector<std::string>& f
4848
bool loadFeaturesPerDescPerView(std::vector<std::vector<std::unique_ptr<feature::Regions>>>& featuresPerDescPerView,
4949
const std::vector<IndexT>& viewIds,
5050
const std::vector<std::string>& folders,
51-
const std::vector<feature::EImageDescriberType>& imageDescriberTypes);
51+
const std::vector<feature::EImageDescriberType>& imageDescriberTypes, bool errorOnMissing = true);
5252

5353
/**
5454
* @brief Load Regions (Features & Descriptors) for each view of the provided SfMData container.

0 commit comments

Comments
 (0)