我正在尝试在opencv 2.4.4中使用flann中的本地敏感哈希算法。这是我的代码
Ptr<IplImage> cluster_image = cvLoadImage("C:\\Users\\Administrator\\Pictures\\1.jpg");
vector<KeyPoint> cluster_keypoint;
Mat des;
description_detect(cluster_image,cluster_keypoint,des,SIFT_DESCRIPTION);
//My function to extract the sift feature from image.
//Descriptions are stored at variable des.
flann::Index my_index(des, flann::LshIndexParams(10, 10, 2));
运行此代码以通过lsh算法构建flann的索引。代码断言
“Opencv错误,不支持的格式或格式组合type = 5”
我检查miniflann.cpp中的代码。看起来flann中的局部敏感哈希算法只与CV_8U Mat类型兼容,而不是由sift生成的CV_32F。
但是,从ORB,Brief,BRISK,FREAK检测到的其他二进制描述符可以生成CV_8U Mat类型。
所以我的问题是:本地敏感哈希算法是否只与opencv中的二进制描述符兼容?
答案 0 :(得分:4)
是:哈希函数仅针对二进制描述符(即可以表示为unsigned char
数组的描述符)实现。
请参阅此答案以获取更多详细信息:Binary features and Locality Sensitive Hashing (LSH)