繁体   English   中英

OpenCV:findHomography生成一个空矩阵

[英]OpenCV: findHomography generating an empty matrix

使用findHomography()

Mat H = findHomography( obj, scene, cv::RANSAC , 3, hom_mask, 2000, 0.995 );

有时,对于某些图像,生成的H矩阵保持为空(H是UINT8,1x0x0)。 但是,两个图像之间显然存在匹配(看起来好像检测到了良好的关键点匹配),而就在片刻之前,对于具有相似关键点响应的两个相似图像,生成了一个相关矩阵。 输入参数“ obj”和“ scene”都是Point2f的向量, Point2f包含各种坐标。

这是常见问题吗? 还是您认为某个漏洞可能潜伏在某个地方? 就个人而言,我已经处理了数百个存在匹配项的图像,虽然有时看到匹配项不佳,但这是我第一次获得一个空矩阵...

编辑:这就是说,即使我的眼睛认为图像对中应该有一个匹配项,我也意识到它可能会使图像的某些部分与另一部分混淆,并且也许确实没有“好的”匹配项。

所以我的问题是:当无法找到合适的findHomography()时, findHomography()行为如何? 它会返回一个空矩阵,还是会总是提供一个单应性,尽管它是一个非常差的单应性? 我只想知道我是否遇到标准行为,或者我自己的代码中是否存在错误。

很好,您会看到, cv::findHomography()函数可能会从2.4.5版本开始返回空的单应性矩阵(0 cols x 0行)。 根据一些意见,这似乎仅在传递cv::RANSAC标志时才发生。

请参阅此处报告的问题:

发生这种情况的原因可能是因为我们放入了新的Levenberg-Marquardt解算器实验版,但效果不佳(可能是由于某些错误)

我建议在任何地方使用它之前都要检查计算的单应性:

cv::Mat h = cv::findHomography(...)
if (!h.empty())
{
    // Use it
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM