diff --git a/modules/stitching/autocalib.cpp b/modules/stitching/autocalib.cpp index 9e4ad7fd5f..e80e49edb6 100644 --- a/modules/stitching/autocalib.cpp +++ b/modules/stitching/autocalib.cpp @@ -82,7 +82,7 @@ void estimateFocal(const vector &features, const vector(features.size()); focals.resize(num_images); - vector > all_focals(num_images); + vector all_focals; for (int i = 0; i < num_images; ++i) { @@ -91,31 +91,26 @@ void estimateFocal(const vector &features, const vector 0) { - if (all_focals[i].size() > 0) - { - nth_element(all_focals[i].begin(), all_focals[i].end(), - all_focals[i].begin() + all_focals[i].size()/2); - focals[i] = all_focals[i][all_focals[i].size()/2]; - } - else - { - LOGLN("Can't estimate focal length #" << i << ", will use naive approach"); - focals[i] = features[i].img_size.width + features[i].img_size.height; - } - + nth_element(all_focals.begin(), all_focals.end(), all_focals.begin() + all_focals.size()/2); + for (int i = 0; i < num_images; ++i) + focals[i] = all_focals[all_focals.size()/2]; + } + else + { + double focals_sum = 0; + for (int i = 0; i < num_images; ++i) + focals_sum += features[i].img_size.width + features[i].img_size.height; + for (int i = 0; i < num_images; ++i) + focals[i] = focals_sum / num_images; } }