diff --git a/modules/calib3d/src/ptsetreg.cpp b/modules/calib3d/src/ptsetreg.cpp index 830fa8ae1a..5e652d4fd5 100644 --- a/modules/calib3d/src/ptsetreg.cpp +++ b/modules/calib3d/src/ptsetreg.cpp @@ -344,10 +344,8 @@ public: else errf = err; CV_Assert( errf.isContinuous() && errf.type() == CV_32F && (int)errf.total() == count ); - std::sort(errf.ptr(), errf.ptr() + count); - - double median = count % 2 != 0 ? - errf.at(count/2) : (errf.at(count/2-1) + errf.at(count/2))*0.5; + std::nth_element(errf.ptr(), errf.ptr() + count/2, errf.ptr() + count); + double median = errf.at(count/2); if( median < minMedian ) {