@@ -281,18 +281,23 @@ class SparseRLOFOpticalFlowImpl : public SparseRLOFOpticalFlow
281
281
CV_Assert (!prevImg.empty () && prevImg.depth () == CV_8U && (prevImg.channels () == 3 || prevImg.channels () == 1 ));
282
282
CV_Assert (!nextImg.empty () && nextImg.depth () == CV_8U && (nextImg.channels () == 3 || nextImg.channels () == 1 ));
283
283
CV_Assert (prevImg.sameSize (nextImg));
284
- if ((param->supportRegionType == SR_CROSS) && (prevImg.channels () != 3 || nextImg.channels () != 3 ))
285
- CV_Error (cv::Error::BadNumChannels, " if SR_CROSS is used, both images need to have 3 channels." );
286
-
287
- Mat prevImage = prevImg.getMat ();
288
- Mat nextImage = nextImg.getMat ();
289
- Mat prevPtsMat = prevPts.getMat ();
290
284
291
285
if (param.empty ())
292
286
{
293
- param = Ptr<RLOFOpticalFlowParameter>(new RLOFOpticalFlowParameter);
287
+ param = makePtr<RLOFOpticalFlowParameter>();
288
+ }
289
+ CV_DbgAssert (!param.empty ());
290
+
291
+ if (param->supportRegionType == SR_CROSS)
292
+ {
293
+ CV_CheckChannelsEQ (prevImg.channels (), 3 , " SR_CROSS mode requires images with 3 channels" );
294
+ CV_CheckChannelsEQ (nextImg.channels (), 3 , " SR_CROSS mode requires images with 3 channels" );
294
295
}
295
296
297
+ Mat prevImage = prevImg.getMat ();
298
+ Mat nextImage = nextImg.getMat ();
299
+ Mat prevPtsMat = prevPts.getMat ();
300
+
296
301
if (param->useInitialFlow == false )
297
302
nextPts.create (prevPtsMat.size (), prevPtsMat.type (), -1 , true );
298
303
0 commit comments