`
jinghuainfo
  • 浏览: 1520755 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

经典算法研究系列:九之续、sift算法的编译与实现

 
阅读更多

九之续、sift算法的编译与实现

作者:July 、二零一一年三月一日。
代码:Rob Hess维护的sift 库,July updated。
环境:windows xp+vc6.0。
条件:opencv1.0、gsl-1.8.exe
-----------------------------------------------

昨日,下载了Rob Hess的sift库,将其源码粗略的看了看,想要编译时,遇到了不少问题,先修改了下代码,然后下载opencv、gsl。最后,几经周折,才最终编译成功。
以下便是sift源码库编译后的效果图:


为了给有兴趣实现sift算法的朋友提供个参考,特整理此文如下。要了解什么是sift算法,请参考:九、图像特征提取与匹配之SIFT算法。ok,咱们下面,就来利用Rob Hess维护的sift 库来实现sift算法:

首先,请下载Rob Hess维护的sift 库
http://blogs.oregonstate.edu/hess/code/sift/
下载Rob Hess的这个压缩包后,如果直接解压缩,直接编译,那么会出现下面的错误提示:
编译提示:error C1083: Cannot open include file: 'cxcore.h': No such file or directory,找不到这个头文件。

这个错误,是因为你还没有安装opencv,因为:cxcore.h和cv.h是开源的OPEN CV头文件,不是VC++的默认安装文件,所以你还得下载OpenCV并进行安装。然后,可以在OpenCV文件夹下找到你所需要的头文件了。

据网友称,截止2010年4月4日,还没有在VC6.0下成功使用opencv2.0的案例。所以,如果你是VC6.0的用户请下载opencv1.0版本。vs的话,opencv2.0,1.0任意下载。

以下,咱们就以vc6.0为平台举例,下载并安装opencv1.0版本、gsl等。当然,你也可以用vs编译,同样下载opencv(具体版本不受限制)、gsl等。


请按以下步骤操作:
、下载opencv1.0
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/1.0/OpenCV_1.0.exe/download

二、安装opencv1.0,配置Windows环境变量
1、安装注意:假如你是将OpenCV安装到C:/Program Files/OpenCV(如果你安装的时候选择不是安装在C盘,则下面所有对应的C盘都改为你所安装在的那个“X盘”,即可),在安装时选择"将/OpenCV/bin加入系统变量",打上“勾”。(Add/OpenCV/bin to the systerm PATH。这一步确认选上了之后,下面的检查环境变量的步骤,便可免去

2、检查环境变量。为了确保上述步骤中,加入了系统变量,在安装opencv1.0成功后,还得检查C:/Program Files/OpenCV/bin是否已经被加入到环境变量PATH,如果没有,请加入。
3、最后是配置Visual C++ 6.0。

全局设置
菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径:
C:/Program Files/OpenCV/lib

然后选择include files,在下方填入路径(参考下图):
C:/Program Files/OpenCV/cxcore/include
C:/Program Files/OpenCV/cv/include
C:/Program Files/OpenCV/cvaux/include
C:/Program Files/OpenCV/ml/include
C:/Program Files/OpenCV/otherlibs/highgui
C:/Program Files/OpenCV/otherlibs/cvcam/include

最后选择source files,在下方填入路径:
C:/Program Files/OpenCV/cv/src
C:/Program Files/OpenCV/cxcore/src
C:/Program Files/OpenCV/cvaux/src
C:/Program Files/OpenCV/otherlibs/highgui
C:/Program Files/OpenCV/otherlibs/cvcam/src/windows

项目设置
每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上:
cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib
当然,你不需要这么多lib,你可以只添加你需要的lib(见下图)

、下载gsl,gsl也是一个库,也需要下载:
http://sourceforge.net/projects/gnuwin32/files/gsl/1.8/gsl-1.8.exe/download。在编译时候GSL也是和OpenCV一样要把头文件和lib的路径指定好。

、配置gsl

将C:/WinGsl/bin中的WinGsl.dll和WinGslD.dll复制到C:/VC6.0/Bin;将整个Gsl目录复制到C:/VC6.0/Bin下;lib目录下的所有.lib文件全部复制到C:/VC6.0/Lib下。
然后,在tools-options-directories中,将C:/WinGsl下的lib,gsl分别加入到库文件和头文件的搜索路径中。

以下是可能会出现的错误情况处理:

I、OpenCV安装后“没有找到cxcore100.dll”的错误处理
在安装时选择“将/OpenCV/bin加入系统变量”(Add/OpenCV/bin to the systerm PATH)。 但该选项并不一定能成功添加到系统变量,如果编写的程序在运行时出现“没有找到cxcore100.dll,因为这个应用程序未能启动。重新安装应用程序可能会修复此问题。”的错误。

手动在我的电脑->属性->高级->环境变量->系统变量->path添加c:/program files/opencv/bin;添加完成后需要重启计算机。

II、vc6.0下配置了一下,可是编译程序时遇到如下一个错误:
Linking... LINK : fatal error LNK1104: cannot open file"odbccp32.libcxcore.lib"
可能是:在工程设置的时候添加连接库时没加空格或.来把两个文件名(odbccp32.lib cxcore.lib)分开。注意每一次操作后,记得保存。


若经过以上所有的步骤之后,如果还不能正常编译,那就是还要稍微修改下你下载的Rob Hess代码。ok,日后,若有空,再好好详细剖析下此sift的源码。最后,祝你编译顺利。
完。

版权声明:原创文章,若需转载,请标明出处。谢谢。

分享到:
评论

相关推荐

    十五个经典算法研究与总结、目录+索引(定稿版)

    九、图像特征提取与匹配之SIFT算法 (SIFT算法系列五篇文章) 九(续)、sift算法的编译与实现 九(再续)、教你一步一步用c语言实现sift算法、上 九(再续)、教你一步一步用c语言实现sift算法、下 九(三续):...

    sift算法 C实现

    在对sift算法有了初步的了解后,有人表示,是否能用c语言实现sift算法,同时,尽量不用到opencv,gsl等第三方库之类的东西。而且,Rob Hess维护的sift 库,也不好懂,有的人根本搞不懂是怎么一回事。 那么本文,...

    SIFT的matlab实现算法

    有详细的备注,步骤易懂,有每个函数的详细介绍,详见...

    sift算法Opencv实现

    sift算法Opencv实现

    十三个经典算法研究与总结、目录+索引

    本经典算法研究系列,如今已写了22篇,13个算法,包括算法理论的研究,算法编程的实现,很多个算法都后续写了续集,如第二个算法:Dijkstra 算法,便写了4篇文章。而红黑树系列,则更是最后写了6篇文章,成为了国内...

    opencv实现的SIFT特征提取与匹配算法

    用opencv+VS2012实现的SIFT特征提取与匹配算法,已编译通过,直接打开就能运行

    MATLAB实现SIFT特征提取算法

    1.基于MATLAB实现的SIFT特征提取算法 2.简单易用,有详细的实现过程 3.加入了Image Visualizer函数

    matlab实现sift算法匹配

    matlab实现的sift算法,各个步骤的实现很清楚,运行可看效果。

    SIFT 算法 C++ 代码实现(非常实用)

    该工程主要是对 SIFT 算法的具体实现,代码中注释非常详细易懂、没有之一,非常适合小伙伴们学习哦!!!

    python 实现sift算法

    尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe在1999年所...

    SIFT算法研究原理

    SIFT算法研究,介绍原理,步骤,方法,程序,资源

    Sift算法与VC代码

    Sift特征匹配算法可以处理两幅图像之间发生平移、旋转、仿射变换情况下的匹配问题,具有很强的匹配能力。在Mikolajczyk对包括Sift算子在内的十种局部描述子所做的不变性对比实验中,Sift及其扩展算法已被证实在同类...

    SIFT.zip_SIFT 算法_sift_sift 匹配_sift匹配_实现sift算法

    本算法实现sift特征匹配,sift算法详细过程等

    sift算法的matlab实现

    MATLAB环境下sift算法的代码实现,MATLAB环境下sift算法的代码实现。希望对刚起步的同学有所帮助。

    sift算法实现sift.rar

    sift算法的实现代码

    MATLAP SIFT算法实现

    可实现无需调试的MATLAP SIFT算法

    sift算法fpga实现

    sift算法fpga实现,英文版,描述很详尽,很好的参考文档

    十五个经典算法研究与总结

    本经典算法研究系列,涵盖A*.Dijkstra.DP.BFS/DFS.红黑树.KMP.遗传.启发式搜索.图像 特征提取SIFT.傅立叶变换.Hash.快速排序.SPFA.快递选择SELECT等15个经典基础算法, 共计31篇文章,包括算法理论的研究与阐述,...

    matlab的SIFT匹配算法研究

    基于matlab的SIFT匹配算法研究,根据SIFT算法流程编写matlab代码

    sift算法opencv实现

    sift算法opencv实现,使用openc2.31,vs2008,绝对可用。

Global site tag (gtag.js) - Google Analytics