今天研究了一下opencv中的FLANN库,踩坑一下午,遇到问题:OpenCV Error: Unsupported format or combination of formats (type=5)
在stackoverflow下也没人解决,所以特意记录下。
在库中使用Index类,完成knn的查找。其构造函数为:
Index(InputArray features, const IndexParams& params, cvflann::flann_distance_t distType=cvflann::FLANN_DIST_L2);
其参数有一些特殊要求:
1.对于params的取值为 AutotunedIndexParams、LinearIndexParams、KDTreeIndexParams时需要使用float型的features
2.当param为LshIndexParams时,features是uchar的Mat
原因是Index的构造函数其实调用了其build方法:
void Index::build(InputArray _data, const IndexParams& params, flann_distance_t _distType)
{
release();
algo = getParam<flann_algorithm_t>(params, "algorithm", FLANN_INDEX_LINEAR);
if( algo == FLANN_INDEX_SAVED )
{
load(_data, getParam<String>(params, "filename",