当前位置: 首页 > 知识库问答 >
问题:

局部敏感哈希算法是否仅与opencv/flann中的二进制描述符兼容?

冯枫
2023-03-14

我试图在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 algo构建flann的索引。代码断言

msgstr"opencv错误,不支持的格式或格式组合类型=5"

我在miniflann.cpp.中检查代码,flann中的局部敏感哈希算法似乎只与CV_8UMat类型兼容,而不是由sift生成的CV_32F。

然而,从ORB、Short、BRISK和FREAK检测到的其他二进制描述符可以生成CV_8U Mat类型。

所以我的问题是:局部敏感哈希算法只与opencv中的二进制描述符兼容吗?

共有1个答案

司马宏邈
2023-03-14

是:哈希函数只实现二进制描述符(即描述符,可以表示为一个数组的无符号char)。

请参考此答案了解更多详细信息:二进制特性和位置敏感哈希(LSH)

 类似资料:
  • 问题内容: 在C / C ++ / Java / C#中是否有相对简单易懂(易于实现)的局部敏感哈希示例? 我想了解更多有关此概念的信息,因此想在几个文本文件上尝试实现只是为了了解其工作原理,因此我不需要任何高性能或任何内容……仅是哈希示例对于相似的输入返回相似的哈希值的函数。我可以通过后面的例子从中学到更多。:) 问题答案: 对于字符串,您可以使用近似匹配算法。 产生随机字串 对于所有字符串,使

  • 问题内容: 我使用Node.js + passport设置了一个用于用户身份验证的站点。 现在,我需要迁移到Golang,并需要使用保存在db中的用户密码进行身份验证。 Node.js加密代码为: 如何使用Golang制作与Node.js bcrypt相同的哈希字符串? 问题答案: 我相信使用golang.org/x/crypto/bcrypt软件包将是: 工作示例:

  • 这个版本规范的部署描述文件可在此下载:http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd

  • 本章指定的 Java™ Servlet 规范要求 Web 容器支持部署描述文件。部署描述文件表达了应用开发人员、应用集成人员和 Web 应用部署人员之间的元素和配置信息。 对于 Java Servlet 2.4 和以后的版本,部署描述文件在 XML 模式文档中定义。 为了向后兼容到2.2版本的API编写的应用程序,Web 容器也需要支持2.2版本的部署描述文件。为了向后兼容2.3版本的API编写的

  • 我从Spark哲学开始,在我的例子中是Pyspark。 我有一个学校的小项目要做,看起来不难,但是我已经做了很多天了,我仍然不能成功。 我必须将图像加载到文件夹中并提取描述符以进行降维。 我创建了一个带有图像路径的Pyspark数据框,现在我想添加一个带有描述符的列。 我是这样做的。 图像路径列表: 提取描述符的函数: 功能自定义项: 新列的创建: printSchema()的结果: 根--pat

  • 问题内容: 在项目17:“仅使用接口定义类型”中,我遇到了不建议使用接口存储常量的解释。我在下面说明。 “更糟糕的是,它表示一种承诺:如果在将来的发行版中对该类进行了修改,使其不再需要使用常量,则它仍必须实现该接口以确保二进制兼容性。” 二进制兼容性在这里意味着什么? 有人可以用Java的例子指导我,说明代码是二进制兼容的。 问题答案: 简而言之,二进制兼容性意味着更改类时,无需重新编译使用它的类