renamed parameter of drawMatches (mask to matchesMask)

This commit is contained in:
Maria Dimashova 2010-06-12 10:11:57 +00:00
parent c751e901ce
commit 008da75691
4 changed files with 18 additions and 18 deletions

View File

@ -1965,7 +1965,7 @@ Match is a line connecting two keypoints (circles).
void drawMatches( const Mat\& img1, const vector<KeyPoint>\& keypoints1, void drawMatches( const Mat\& img1, const vector<KeyPoint>\& keypoints1,
const Mat\& img2, const vector<KeyPoint>\& keypoints2, const Mat\& img2, const vector<KeyPoint>\& keypoints2,
const vector<int>\& matches, Mat\& outImg, const vector<int>\& matches, Mat\& outImg,
const vector<char>\& mask = vector<char>(), const vector<char>\& matchesMask = vector<char>(),
const Scalar\& matchColor = Scalar::all(-1), const Scalar\& matchColor = Scalar::all(-1),
const Scalar\& singlePointColor = Scalar::all(-1), const Scalar\& singlePointColor = Scalar::all(-1),
int flags = DrawMatchesFlags::DEFAULT ); int flags = DrawMatchesFlags::DEFAULT );
@ -1996,7 +1996,7 @@ void drawMatches( const Mat\& img1, const vector<KeyPoint>\& keypoints1,
\end{description} \end{description}
\begin{description} \begin{description}
\cvarg{mask}{Mask determining which matches will be drawn. If mask is empty all matches will be drawn. } \cvarg{matchesMask}{Mask determining which matches will be drawn. If mask is empty all matches will be drawn. }
\end{description} \end{description}
\begin{description} \begin{description}
@ -2015,7 +2015,7 @@ void drawMatches( const Mat\& img1, const vector<KeyPoint>\& keypoints1,
struct DrawMatchesFlags struct DrawMatchesFlags
{ {
enum{ DEFAULT = 0, // Output image matrix will be created (Mat::create), enum{ DEFAULT = 0, // Output image matrix will be created (Mat::create),
// i.e. existing memory of output image will be reused. // i.e. existing memory of output image may be reused.
// Two source image, matches and single keypoints will be drawn. // Two source image, matches and single keypoints will be drawn.
DRAW_OVER_OUTIMG = 1, // Output image matrix will not be created (Mat::create). DRAW_OVER_OUTIMG = 1, // Output image matrix will not be created (Mat::create).
// Matches will be drawn on existing content // Matches will be drawn on existing content

View File

@ -2128,7 +2128,7 @@ protected:
struct CV_EXPORTS DrawMatchesFlags struct CV_EXPORTS DrawMatchesFlags
{ {
enum{ DEFAULT = 0, // Output image matrix will be created (Mat::create), enum{ DEFAULT = 0, // Output image matrix will be created (Mat::create),
// i.e. existing memory of output image will be reused. // i.e. existing memory of output image may be reused.
// Two source image, matches and single keypoints will be drawn. // Two source image, matches and single keypoints will be drawn.
DRAW_OVER_OUTIMG = 1, // Output image matrix will not be created (Mat::create). DRAW_OVER_OUTIMG = 1, // Output image matrix will not be created (Mat::create).
// Matches will be drawn on existing content of output image. // Matches will be drawn on existing content of output image.
@ -2139,7 +2139,7 @@ struct CV_EXPORTS DrawMatchesFlags
// Draws matches of keypints from two images on output image. // Draws matches of keypints from two images on output image.
CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1, CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1,
const Mat& img2, const vector<KeyPoint>& keypoints2, const Mat& img2, const vector<KeyPoint>& keypoints2,
const vector<int>& matches, Mat& outImg, const vector<char>& mask = vector<char>(), const vector<int>& matches, Mat& outImg, const vector<char>& matchesMask = vector<char>(),
const Scalar& matchColor = Scalar::all(-1), const Scalar& singlePointColor = Scalar::all(-1), const Scalar& matchColor = Scalar::all(-1), const Scalar& singlePointColor = Scalar::all(-1),
int flags = DrawMatchesFlags::DEFAULT ); int flags = DrawMatchesFlags::DEFAULT );

View File

@ -45,11 +45,11 @@ using namespace std;
namespace cv namespace cv
{ {
CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1, void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1,
const Mat& img2,const vector<KeyPoint>& keypoints2, const Mat& img2,const vector<KeyPoint>& keypoints2,
const vector<int>& matches, Mat& outImg, const vector<char>& mask, const vector<int>& matches, Mat& outImg, const vector<char>& matchesMask,
const Scalar& matchColor, const Scalar& singlePointColor, const Scalar& matchColor, const Scalar& singlePointColor,
int flags ) int flags )
{ {
Size size( img1.cols + img2.cols, MAX(img1.rows, img2.rows) ); Size size( img1.cols + img2.cols, MAX(img1.rows, img2.rows) );
if( flags & DrawMatchesFlags::DRAW_OVER_OUTIMG ) if( flags & DrawMatchesFlags::DRAW_OVER_OUTIMG )
@ -88,12 +88,12 @@ CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1
bool isRandMatchColor = matchColor == Scalar::all(-1); bool isRandMatchColor = matchColor == Scalar::all(-1);
if( matches.size() != keypoints1.size() ) if( matches.size() != keypoints1.size() )
CV_Error( CV_StsBadSize, "matches must have the same size as keypoints1" ); CV_Error( CV_StsBadSize, "matches must have the same size as keypoints1" );
if( !mask.empty() && mask.size() != keypoints1.size() ) if( !matchesMask.empty() && matchesMask.size() != keypoints1.size() )
CV_Error( CV_StsBadSize, "mask must have the same size as keypoints1" ); CV_Error( CV_StsBadSize, "mask must have the same size as keypoints1" );
vector<int>::const_iterator mit = matches.begin(); vector<int>::const_iterator mit = matches.begin();
for( int i1 = 0; mit != matches.end(); ++mit, i1++ ) for( int i1 = 0; mit != matches.end(); ++mit, i1++ )
{ {
if( (mask.empty() || mask[i1] ) && *mit >= 0 ) if( (matchesMask.empty() || matchesMask[i1] ) && *mit >= 0 )
{ {
Point2f pt1 = keypoints1[i1].pt, Point2f pt1 = keypoints1[i1].pt,
pt2 = keypoints2[*mit].pt, pt2 = keypoints2[*mit].pt,

View File

@ -88,21 +88,21 @@ void doIteration( const Mat& img1, Mat& img2, bool isWarpPerspective,
Mat drawImg; Mat drawImg;
if( !H12.empty() ) if( !H12.empty() )
{ {
vector<char> mask( matches.size(), 0 ); vector<char> matchesMask( matches.size(), 0 );
vector<int>::const_iterator mit = matches.begin(); vector<int>::const_iterator mit = matches.begin();
for( size_t i1 = 0; mit != matches.end(); ++mit, i1++ ) for( size_t i1 = 0; mit != matches.end(); ++mit, i1++ )
{ {
Point2f pt1 = keypoints1[i1].pt, Point2f pt1 = keypoints1[i1].pt,
pt2 = keypoints2[*mit].pt; pt2 = keypoints2[*mit].pt;
if( norm(pt2 - applyHomography(H12, pt1)) < 4 ) // inlier if( norm(pt2 - applyHomography(H12, pt1)) < 4 ) // inlier
mask[i1] = 1; matchesMask[i1] = 1;
} }
// draw inliers // draw inliers
drawMatches( img1, keypoints1, img2, keypoints2, matches, drawImg, mask, CV_RGB(0, 255, 0), CV_RGB(0, 0, 255) ); drawMatches( img1, keypoints1, img2, keypoints2, matches, drawImg, matchesMask, CV_RGB(0, 255, 0), CV_RGB(0, 0, 255) );
// draw outliers // draw outliers
/*for( size_t i1 = 0; i1 < mask.size(); i1++ ) /*for( size_t i1 = 0; i1 < matchesMask.size(); i1++ )
mask[i1] = !mask[i1]; matchesMask[i1] = !matchesMask[i1];
drawMatches( img1, img2, keypoints1, keypoints2, matches, mask, drawImg, CV_RGB(0, 0, 255), CV_RGB(255, 0, 0), drawMatches( img1, keypoints1, img2, keypoints2, matches, drawImg, matchesMask, CV_RGB(0, 0, 255), CV_RGB(255, 0, 0),
DrawMatchesFlags::DRAW_OVER_OUTIMG | DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );*/ DrawMatchesFlags::DRAW_OVER_OUTIMG | DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );*/
} }
else else