renamed parameter of drawMatches (mask to matchesMask)
This commit is contained in:
parent
c751e901ce
commit
008da75691
@ -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,11 +45,11 @@ using namespace std;
|
||||
namespace cv
|
||||
{
|
||||
|
||||
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,
|
||||
const Scalar& matchColor, const Scalar& singlePointColor,
|
||||
int flags )
|
||||
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>& matchesMask,
|
||||
const Scalar& matchColor, const Scalar& singlePointColor,
|
||||
int flags )
|
||||
{
|
||||
Size size( img1.cols + img2.cols, MAX(img1.rows, img2.rows) );
|
||||
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);
|
||||
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…
x
Reference in New Issue
Block a user