]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
fixed output mask in cvFindHomography (thanks to robozyt, ticket #236)
authorvp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Wed, 31 Mar 2010 17:43:01 +0000 (17:43 +0000)
committervp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Wed, 31 Mar 2010 17:43:01 +0000 (17:43 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2960 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/src/cv/cvfundam.cpp

index a34426cdc0ab48a1a3d2be0fca92183570e24e64..0b6f11ff5304694e21f0f25edea2ee3c2c6ca620 100644 (file)
@@ -270,6 +270,9 @@ cvFindHomography( const CvMat* objectPoints, const CvMat* imagePoints,
 
     if( result )
         cvConvert( &matH, __H );
+    
+    if( mask && tempMask )
+        cvCopy( tempMask, mask );
 
     return (int)result;
 }
@@ -601,8 +604,7 @@ CV_IMPL int cvFindFundamentalMat( const CvMat* points1, const CvMat* points2,
         CV_Assert( CV_IS_MASK_ARR(mask) && CV_IS_MAT_CONT(mask->type) &&
             (mask->rows == 1 || mask->cols == 1) &&
             mask->rows*mask->cols == count );
-        tempMask = cvCreateMatHeader(1, count, CV_8U);
-        cvSetData(tempMask, mask->data.ptr, 0);
+        tempMask = cvCloneMat(mask);
     }
     else if( count > 8 )
         tempMask = cvCreateMat( 1, count, CV_8U );
@@ -636,6 +638,9 @@ CV_IMPL int cvFindFundamentalMat( const CvMat* points1, const CvMat* points2,
 
     if( result )
         cvConvert( fmatrix->rows == 3 ? &_F3x3 : &_F9x3, fmatrix );
+    
+    if( mask && tempMask )
+        cvCopy( tempMask, mask );
 
     return result;
 }