Commit 5dfb8103 authored by Alexander Alekhin's avatar Alexander Alekhin

video: fix optflow test: NAN results shouldn't bypass checks

parent 8213e57f
...@@ -66,7 +66,7 @@ void CV_OptFlowPyrLKTest::run( int ) ...@@ -66,7 +66,7 @@ void CV_OptFlowPyrLKTest::run( int )
double max_err = 0., sum_err = 0; double max_err = 0., sum_err = 0;
int pt_cmpd = 0; int pt_cmpd = 0;
int pt_exceed = 0; int pt_exceed = 0;
int merr_i = 0, merr_j = 0, merr_k = 0; int merr_i = 0, merr_j = 0, merr_k = 0, merr_nan = 0;
char filename[1000]; char filename[1000];
CvPoint2D32f *u = 0, *v = 0, *v2 = 0; CvPoint2D32f *u = 0, *v = 0, *v2 = 0;
...@@ -153,12 +153,18 @@ void CV_OptFlowPyrLKTest::run( int ) ...@@ -153,12 +153,18 @@ void CV_OptFlowPyrLKTest::run( int )
if( status[i] != 0 ) if( status[i] != 0 )
{ {
double err; double err;
if( cvIsNaN(v[i].x) ) if( cvIsNaN(v[i].x) || cvIsNaN(v[i].y) )
{ {
merr_j++; merr_j++;
continue; continue;
} }
if( cvIsNaN(v2[i].x) || cvIsNaN(v2[i].y) )
{
merr_nan++;
continue;
}
err = fabs(v2[i].x - v[i].x) + fabs(v2[i].y - v[i].y); err = fabs(v2[i].x - v[i].x) + fabs(v2[i].y - v[i].y);
if( err > max_err ) if( err > max_err )
{ {
...@@ -198,6 +204,13 @@ void CV_OptFlowPyrLKTest::run( int ) ...@@ -198,6 +204,13 @@ void CV_OptFlowPyrLKTest::run( int )
goto _exit_; goto _exit_;
} }
if( merr_nan > 0 )
{
ts->printf( cvtest::TS::LOG, "NAN tracking result with status != 0 (%d times)\n", merr_nan );
code = cvtest::TS::FAIL_BAD_ACCURACY;
goto _exit_;
}
_exit_: _exit_:
cvFree( &status ); cvFree( &status );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment