如何使用BestOf2NearestMatcher匹配掩码

时间:2015-10-29 09:08:17

标签: c++ opencv opencv3.0

我正在玩OpenCV 3.0及其panorama sample

它有效,现在我想逐步理解和优化它的用例。 英特尔发布了article,这符合我的需求。

他们说可以通过仅比较相邻图像来改善匹配。

以下代码:

 vector<MatchesInfo> pairwise_matches;     
 BestOf2NearestMatcher matcher(try_cuda, match_conf);
 matcher(features, pairwise_matches);
 matcher.collectGarbage();

应更改为:

vector<MatchesInfo> pairwise_matches;
BestOf2NearestMatcher matcher(try_cuda, match_conf);
Mat matchMask(features.size(),features.size(),CV_8U,Scalar(0));
for (int i = 0; i < num_images -1; ++i)
{
    matchMask.at<char>(i,i+1) =1;
}
matcher(features, pairwise_matches,matchMask);
matcher.collectGarbage();

但这不起作用,因为matcher()在OpenCV 3.0中需要UMatUMat没有at()函数。

我也尝试过:

matcher(features, pairwise_matches,matchMask.getUMat(ACCESS_READ ));

但这也行不通。

如果有人能解释如何使用带掩码的Matcher或者将其迁移到OpenCV 3.0,我会很棒。

1 个答案:

答案 0 :(得分:2)

您可以将BestOf2NearestRangeMatcherrange_width=2一起使用,这应该比使用蒙版更快,因为内部循环会更短,请参阅the code here