fixed crash in cv2.findHomography() (ticket #1094)
This commit is contained in:
parent
f26859b345
commit
bfbc70436d
@ -247,9 +247,8 @@ cvFindHomography( const CvMat* objectPoints, const CvMat* imagePoints,
|
|||||||
CV_Assert( CV_IS_MASK_ARR(mask) && CV_IS_MAT_CONT(mask->type) &&
|
CV_Assert( CV_IS_MASK_ARR(mask) && CV_IS_MAT_CONT(mask->type) &&
|
||||||
(mask->rows == 1 || mask->cols == 1) &&
|
(mask->rows == 1 || mask->cols == 1) &&
|
||||||
mask->rows*mask->cols == count );
|
mask->rows*mask->cols == count );
|
||||||
tempMask = cvCloneMat(mask);
|
|
||||||
}
|
}
|
||||||
else if( count > 4 )
|
if( mask || count > 4 )
|
||||||
tempMask = cvCreateMat( 1, count, CV_8U );
|
tempMask = cvCreateMat( 1, count, CV_8U );
|
||||||
if( !tempMask.empty() )
|
if( !tempMask.empty() )
|
||||||
cvSet( tempMask, cvScalarAll(1.) );
|
cvSet( tempMask, cvScalarAll(1.) );
|
||||||
@ -278,7 +277,12 @@ cvFindHomography( const CvMat* objectPoints, const CvMat* imagePoints,
|
|||||||
cvConvert( &matH, __H );
|
cvConvert( &matH, __H );
|
||||||
|
|
||||||
if( mask && tempMask )
|
if( mask && tempMask )
|
||||||
cvCopy( tempMask, mask );
|
{
|
||||||
|
if( CV_ARE_SIZES_EQ(mask, tempMask) )
|
||||||
|
cvCopy( tempMask, mask );
|
||||||
|
else
|
||||||
|
cvTranspose( tempMask, mask );
|
||||||
|
}
|
||||||
|
|
||||||
return (int)result;
|
return (int)result;
|
||||||
}
|
}
|
||||||
@ -611,9 +615,8 @@ CV_IMPL int cvFindFundamentalMat( const CvMat* points1, const CvMat* points2,
|
|||||||
CV_Assert( CV_IS_MASK_ARR(mask) && CV_IS_MAT_CONT(mask->type) &&
|
CV_Assert( CV_IS_MASK_ARR(mask) && CV_IS_MAT_CONT(mask->type) &&
|
||||||
(mask->rows == 1 || mask->cols == 1) &&
|
(mask->rows == 1 || mask->cols == 1) &&
|
||||||
mask->rows*mask->cols == count );
|
mask->rows*mask->cols == count );
|
||||||
tempMask = cvCloneMat(mask);
|
|
||||||
}
|
}
|
||||||
else if( count > 8 )
|
if( mask || count > 8 )
|
||||||
tempMask = cvCreateMat( 1, count, CV_8U );
|
tempMask = cvCreateMat( 1, count, CV_8U );
|
||||||
if( !tempMask.empty() )
|
if( !tempMask.empty() )
|
||||||
cvSet( tempMask, cvScalarAll(1.) );
|
cvSet( tempMask, cvScalarAll(1.) );
|
||||||
@ -647,7 +650,12 @@ CV_IMPL int cvFindFundamentalMat( const CvMat* points1, const CvMat* points2,
|
|||||||
cvConvert( fmatrix->rows == 3 ? &_F3x3 : &_F9x3, fmatrix );
|
cvConvert( fmatrix->rows == 3 ? &_F3x3 : &_F9x3, fmatrix );
|
||||||
|
|
||||||
if( mask && tempMask )
|
if( mask && tempMask )
|
||||||
cvCopy( tempMask, mask );
|
{
|
||||||
|
if( CV_ARE_SIZES_EQ(mask, tempMask) )
|
||||||
|
cvCopy( tempMask, mask );
|
||||||
|
else
|
||||||
|
cvTranspose( tempMask, mask );
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user