问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何本地安装SIFT

发布网友 发布时间:2022-05-23 18:53

我来回答

1个回答

热心网友 时间:2024-02-17 09:30

SIFT的实现有很多版本,具体方式都是那么几个,找个好用的不太容易,因为对于代码不熟练者各种版本用起来都有点水土不服,需要调整调整才行。本人是在VS2010下使用的Rob Hess的源码。

一、前提

安装Opencv,详见:VS2010+Opencv-2.4.0的配置攻略(该版本SIFT是基于Opencv的)。

下载SIFT源码,见Rob Hess的主页(别告诉我不懂英文不知道下载链接在哪,下那个Windows VC++的版本 sift-latest_win.zip)。

二、测试

1、解压sift源码,发现有如下文件:

其中有3个是解决方案文件夹:siftFeat、match和dspFeat,siftFeat工程是做SITF特征提取的,一般只会用到这个案例,match是利用SIFT特征做图像匹配的,desFeat没用过不说了。

所有源代码(包括上面3个工程的main)都在文件夹外面,就是那些成对的.h和.c了。

2、可以先试着跑跑siftFeat。

打开siftFeat.sln,配置好Opencv在VS2010中的环境参数(VS2010+Opencv-2.4.0的配置攻略中有述,注意include里面要添加/include/opencv,因为sift源码直接引用了/include/opencv目录下的头文件)。

编译报错:
1>utils.obj : error LNK2001: 无法解析的外部符号 _va_end
1>utils.obj : error LNK2001: 无法解析的外部符号 _va_start

说好了源码里面有些东西是要改的:在utils.c中#include <stdarg.h>就OK了。

F5调试运行,成功显示:

三、在C++工程中应用SIFT

1、在VS2010中新建自己的C++工程PP。在工程根目录内添加目录命名为sift,将sift源码文件imgfeatures.c imgfeatures.h kdtree.c kdtree.h minpq.c minpq.h sift.c sift.h utils.c utils.h xform.c xform.h(即除了match.c siftfeat.c dspfeat.c的所有源码文件)复制到\PP\sift内。

2、在VS2010内引入sift源码:在“资源管理器”视图里添加“筛选器”,命名为sift,将刚才拷贝过来的sift源文件引入其内:

3、在需要使用sift方法的地方添加对应头文件:

#include "..\sift\sift.h" #include "..\sift\imgfeatures.h" #include "..\sift\utils.h"

 4、取消.c文件的预编译:同样在“资源管理器”视图下面复选sift文件夹内所有.c文件,右键选择“属性”,选取“C/C++”->“预编译头”,在“预编译头”选项中选择“不使用预编译头”。

5、C语法设定:分别打开imgfeatures.h和sift.h,让所有函数包含在

#ifdef __cplusplus extern "C" { #endif

#ifdef __cplusplus } #endif

之间。例如:

View Code

... #ifdef __cplusplus extern "C" { #endif ... extern int sift_features( IplImage* img, struct feature** feat ); ...extern int _sift_features( IplImage* img, struct feature** feat, int intvls, double sigma, double contr_thr, int curv_thr,int img_dbl, int descr_width, int descr_hist_bins ); #ifdef __cplusplus } #endif #endif

PS:我只是用了_sift_features(...)等几个函数,所以只加了两个头文件的C语法声明,如果是用了其他的头文件,均需要添加。

6、综上,你应该可以直接使用sift相关函数了,参照siftfeat.c中的写法,用用_sift_features(...)试试!
实际上如果只需要使用SIFT特征提取的函数,前面几步只需要复制imgfeatures.c imgfeatures.h sift.c sift.h utils.c utils.h这6个文件就够了

追问这是一个生物种预测SNP致病性的软件,我想问的是linux中安装方法,不好意思,没有说清楚

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 求基于sift特征提取的图像匹配代码,最好是利用C++和opencv编写 拉莫斯的生日是哪一天? php自己写框架需要多久 opencv使用sift时因为图片太大编译器报错有什么处理方法? 现在php 那种框架用的比较多一点。 我们能不能看到天使 求侧田的全部歌 opencv surf检测怎么控制关键点个数 一直看见天使 歌词 侧田有首歌里面有句歌词是‘其实伤心都不过为爱’这首歌是? 宇航员有看到天使吗? 现在的php开发框架中哪一款的效率最高,学习起来相对简单呢? 侧田有乜新歌? 你看到天使吗?(注意是真正的天使) 图像处理中sift特征可以用来进行训练吗? volar 侧田的歌曲链接? 美国宇航员登月在太空看见天使是真的吗 请问侧田的一首歌 宇航员在空中看到天使从佛教中如何解释? 侧田有什么特别好听的歌? RobHess sift用opencv编译时出现如下,是怎么回事 列举世界足坛优秀左后卫 塞尔吉奥·拉莫斯的质料!详细点! MC李先生的表白词。 mc暴徒和李先生什么关系,暴徒大灵什么关系,大灵老李又是什么关系 西班牙的主力左后卫是谁 MC暴徒 MC大灵 MC赵小磊 MC农民 李先生 他们是在哪个频道开的直播间啊 mc李先生视频直播间YY多少 lt&#39;s a panda句式对吗 mc李先生常用的头像要图片 itsapandailkeit怎么读 ___(it&#39;s) a panda.用所给单词的适当形式填空? 2008年yy李先生是不是有人给他刷了一亿元 it is a panda的复数句怎么改? itis an panda It are a panda改正 多个麦克风怎么保留一个 look!lt,s a panda. lt&#39;s a panda的问句是什么 wowitsapanda用中文怎么说?