renamed parameter of drawMatches (mask to matchesMask)

pull/13383/head
Maria Dimashova 15 years ago
parent c751e901ce
commit 008da75691
  1. 6
      doc/cv_feature_detection.tex
  2. 4
      modules/features2d/include/opencv2/features2d/features2d.hpp
  3. 8
      modules/features2d/src/descriptors.cpp
  4. 12
      samples/cpp/descriptor_extractor_matcher.cpp

@ -1965,7 +1965,7 @@ Match is a line connecting two keypoints (circles).
void drawMatches( const Mat\& img1, const vector<KeyPoint>\& keypoints1,
const Mat\& img2, const vector<KeyPoint>\& keypoints2,
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\& singlePointColor = Scalar::all(-1),
int flags = DrawMatchesFlags::DEFAULT );
@ -1996,7 +1996,7 @@ void drawMatches( const Mat\& img1, const vector<KeyPoint>\& keypoints1,
\end{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}
\begin{description}
@ -2015,7 +2015,7 @@ void drawMatches( const Mat\& img1, const vector<KeyPoint>\& keypoints1,
struct DrawMatchesFlags
{
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.
DRAW_OVER_OUTIMG = 1, // Output image matrix will not be created (Mat::create).
// Matches will be drawn on existing content

@ -2128,7 +2128,7 @@ protected:
struct CV_EXPORTS DrawMatchesFlags
{
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.
DRAW_OVER_OUTIMG = 1, // Output image matrix will not be created (Mat::create).
// 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.
CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1,
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),
int flags = DrawMatchesFlags::DEFAULT );

@ -45,9 +45,9 @@ using namespace std;
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 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,
int flags )
{
@ -88,12 +88,12 @@ CV_EXPORTS void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1
bool isRandMatchColor = matchColor == Scalar::all(-1);
if( matches.size() != keypoints1.size() )
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" );
vector<int>::const_iterator mit = matches.begin();
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,
pt2 = keypoints2[*mit].pt,

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

Loading…
Cancel
Save