From eb7ff99f8012c9d4c5c7f911d00d922982ac8a8f Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Fri, 8 Nov 2013 01:08:36 +0400 Subject: [PATCH] fixed cv::remap and cv::convertMaps for map types CV_16SC2 && CV_16UC1 --- modules/imgproc/src/imgwarp.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index 39cc043db9..1ae73291f7 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -2935,7 +2935,10 @@ public: if( m1->type() == CV_16SC2 && (m2->type() == CV_16UC1 || m2->type() == CV_16SC1) ) { bufxy = (*m1)(Rect(x, y, bcols, brows)); - bufa = (*m2)(Rect(x, y, bcols, brows)); + + const ushort* sA = (const ushort*)(m2->data + m2->step*(y+y1)) + x; + for( x1 = 0; x1 < bcols; x1++ ) + A[x1] = (ushort)(sA[x1] & (INTER_TAB_SIZE2-1)); } else if( planar_input ) { @@ -3242,7 +3245,7 @@ void cv::convertMaps( InputArray _map1, InputArray _map2, { for( x = 0; x < size.width; x++ ) { - int fxy = src2 ? src2[x] : 0; + int fxy = src2 ? src2[x] & (INTER_TAB_SIZE2-1) : 0; dst1f[x] = src1[x*2] + (fxy & (INTER_TAB_SIZE-1))*scale; dst2f[x] = src1[x*2+1] + (fxy >> INTER_BITS)*scale; } @@ -3251,7 +3254,7 @@ void cv::convertMaps( InputArray _map1, InputArray _map2, { for( x = 0; x < size.width; x++ ) { - int fxy = src2 ? src2[x] : 0; + int fxy = src2 ? src2[x] & (INTER_TAB_SIZE2-1): 0; dst1f[x*2] = src1[x*2] + (fxy & (INTER_TAB_SIZE-1))*scale; dst1f[x*2+1] = src1[x*2+1] + (fxy >> INTER_BITS)*scale; }