From 4378f398c744d7cd192ef5aaa30b2b763b0aaec2 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 21 Nov 2011 16:34:08 +0000 Subject: [PATCH] Fixed border interpolation bug in calcOpticalFlowPyrLK --- modules/video/src/lkpyramid.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/video/src/lkpyramid.cpp b/modules/video/src/lkpyramid.cpp index 69ce0285b..15660a1c5 100644 --- a/modules/video/src/lkpyramid.cpp +++ b/modules/video/src/lkpyramid.cpp @@ -411,7 +411,7 @@ struct LKTrackerInvoker b1 += bbuf[0] + bbuf[2]; b2 += bbuf[1] + bbuf[3]; #endif - + b1 *= FLT_SCALE; b2 *= FLT_SCALE; @@ -575,7 +575,7 @@ void cv::calcOpticalFlowPyrLK( InputArray _prevImg, InputArray _nextImg, else pyrDown(pyr[level-1], pyr[level], pyr[level].size()); copyMakeBorder(pyr[level], temp, winSize.height, winSize.height, - winSize.width, winSize.width, BORDER_REFLECT_101); + winSize.width, winSize.width, BORDER_REFLECT_101|BORDER_ISOLATED); sz = Size((sz.width+1)/2, (sz.height+1)/2); if( sz.width <= winSize.width || sz.height <= winSize.height ) { @@ -608,8 +608,6 @@ void cv::calcOpticalFlowPyrLK( InputArray _prevImg, InputArray _nextImg, calcSharrDeriv(prevPyr[level], derivI); copyMakeBorder(derivI, _derivI, winSize.height, winSize.height, winSize.width, winSize.width, BORDER_CONSTANT); - Mat I = prevPyr[level], J = nextPyr[level]; - parallel_for(BlockedRange(0, npoints), LKTrackerInvoker(prevPyr[level], derivI, nextPyr[level], prevPts, nextPts, status, err,