【问题标题】:OpenCV: Flann matcher crashesOpenCV:Flann 匹配器崩溃
【发布时间】:2014-05-14 16:57:29
【问题描述】:

我正在尝试运行一个检测图像中特征的应用程序,但是当我运行 BRISK 特征、BRIEF 描述符和 FlannBased 匹配器的代码时,它崩溃并显示:

OpenCV Error: Unsupported format or combination of formats (type=0
) in buildIndex_, file /home/stefan/git_repos/opencv/modules/flann/src/miniflann.cpp, line 315
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/stefan/git_repos/opencv/modules/flann/src/miniflann.cpp:315: error: (-210) type=0
 in function buildIndex_

Aborted (core dumped)

有什么想法吗?

【问题讨论】:

  • 您是否尝试过清理并重新启动计算机?来源:stackoverflow.com/questions/11860875/…
  • 是的,但是没有变化,同样的错误,flann需要64个描述符值吗?或者 flann 的类型应该是 int、float 还是 double?我现在想修复一些固定值(32 和 CV_8U)

标签: opencv


【解决方案1】:

您可能尝试过使用 KD-Tree 或 KMeans?它们仅适用于 CV_32F 描述符,如 SIFT 或 SURF。 对于 Brief\ORB\FREAK 这样的二进制描述符,您必须使用 LSH 或层次聚类索引。或简单的蛮力搜索。 您可以自动管理它,例如这样。

cv::flann::Index GenFLANNIndex(cv::Mat keys)
{
  switch (keys.type())
    {
    case CV_32F:
      {
        return  cv::flann::Index(keys,cv::flann::KDTreeIndexParams(4));
        break;
       }
    case CV_8U:
      {
        return cv::flann::Index(keys,cv::flann::HierarchicalClusteringIndexParams(),dist_type);
        break;
      }
    default:
      {
        return cv::flann::Index(keys,cv::flann::KDTreeIndexParams(4));
        break;
      }
    }

}
...
cv::flann::Index tree = GenFLANNIndex(descriptors);

【讨论】:

  • 我没有特殊的行,我对所有描述符、特征类型、SIFT 和 SURF 描述符、KD-Tree 上的特征都这样做。两者的默认值是否与其他不同?
  • 是的,你是对的,类型是 CV_32F 我会修复它
  • 由于二进制描述符的性质不同,必须对它们使用不同的匹配方法,问题不只是CV_32F。
  • 哎哟......这很糟糕!您知道了解更多信息的链接吗?我以前没有做过这种事情
  • 我已经添加了一个示例,您可以如何处理它。
猜你喜欢
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多