我正在尝试运行检测图像功能的应用程序,但是当我运行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)
任何想法为什么?
答案 0 :(得分:10)
您可能尝试使用KD-Tree或KMeans?它们仅适用于SIFT或SURF等CV_32F描述符。 对于像BRIEF \ ORB \ FREAK这样的二进制描述符,您必须使用LSH或Hierarchical clustering index。或简单的强力搜索。 您可以自动管理它,例如这样。
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);