diff --git a/modules/optflow/include/opencv2/optflow/rlofflow.hpp b/modules/optflow/include/opencv2/optflow/rlofflow.hpp index 58daf5337..48456d733 100644 --- a/modules/optflow/include/opencv2/optflow/rlofflow.hpp +++ b/modules/optflow/include/opencv2/optflow/rlofflow.hpp @@ -227,6 +227,7 @@ public: * @note If the grid size is set to (1,1) and the forward backward threshold <= 0 than pixelwise dense optical flow field is * computed by RLOF without using interpolation. * + * @note Note that in output, if no correspondences are found between \a I0 and \a I1, the \a flow is set to 0. * @see optflow::calcOpticalFlowDenseRLOF(), optflow::RLOFOpticalFlowParameter */ class CV_EXPORTS_W DenseRLOFOpticalFlow : public DenseOpticalFlow @@ -493,6 +494,7 @@ public: * computed with the RLOF. * * @note SIMD parallelization is only available when compiling with SSE4.1. + * @note Note that in output, if no correspondences are found between \a I0 and \a I1, the \a flow is set to 0. * * @sa optflow::DenseRLOFOpticalFlow, optflow::RLOFOpticalFlowParameter */ diff --git a/modules/optflow/src/rlofflow.cpp b/modules/optflow/src/rlofflow.cpp index 5e756f397..e9c4b1297 100644 --- a/modules/optflow/src/rlofflow.cpp +++ b/modules/optflow/src/rlofflow.cpp @@ -203,7 +203,11 @@ public: filtered_prevPoints = prevPoints; filtered_currPoints = currPoints; } - + // Interpolators below expect non empty matches + if (filtered_prevPoints.empty()) { + flow.setTo(0); + return; + } if (interp_type == InterpolationType::INTERP_EPIC) { Ptr gd = ximgproc::createEdgeAwareInterpolator();