Fixed border interpolation bug in calcOpticalFlowPyrLK
This commit is contained in:
parent
e01f04885e
commit
4378f398c7
@ -411,7 +411,7 @@ struct LKTrackerInvoker
|
|||||||
b1 += bbuf[0] + bbuf[2];
|
b1 += bbuf[0] + bbuf[2];
|
||||||
b2 += bbuf[1] + bbuf[3];
|
b2 += bbuf[1] + bbuf[3];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
b1 *= FLT_SCALE;
|
b1 *= FLT_SCALE;
|
||||||
b2 *= FLT_SCALE;
|
b2 *= FLT_SCALE;
|
||||||
|
|
||||||
@ -575,7 +575,7 @@ void cv::calcOpticalFlowPyrLK( InputArray _prevImg, InputArray _nextImg,
|
|||||||
else
|
else
|
||||||
pyrDown(pyr[level-1], pyr[level], pyr[level].size());
|
pyrDown(pyr[level-1], pyr[level], pyr[level].size());
|
||||||
copyMakeBorder(pyr[level], temp, winSize.height, winSize.height,
|
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);
|
sz = Size((sz.width+1)/2, (sz.height+1)/2);
|
||||||
if( sz.width <= winSize.width || sz.height <= winSize.height )
|
if( sz.width <= winSize.width || sz.height <= winSize.height )
|
||||||
{
|
{
|
||||||
@ -608,8 +608,6 @@ void cv::calcOpticalFlowPyrLK( InputArray _prevImg, InputArray _nextImg,
|
|||||||
calcSharrDeriv(prevPyr[level], derivI);
|
calcSharrDeriv(prevPyr[level], derivI);
|
||||||
copyMakeBorder(derivI, _derivI, winSize.height, winSize.height, winSize.width, winSize.width, BORDER_CONSTANT);
|
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,
|
parallel_for(BlockedRange(0, npoints), LKTrackerInvoker(prevPyr[level], derivI,
|
||||||
nextPyr[level], prevPts, nextPts,
|
nextPyr[level], prevPts, nextPts,
|
||||||
status, err,
|
status, err,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user