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

经典算法研究系列:九之续、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算法的编译与实现 九(再续)、教你一步一步用c语言实现sift算法、上 九(再续)、教你一步一步用c语言实现sift算法、下 九(三续):SIFT算法的应用--目标识别之Bag-of-words模型 十、从头到尾彻底...

    SIFT算法实现源代码

    SIFT(尺度不变特征变换)...总的来说,"SIFT算法实现源代码"这个资源为学习和应用SIFT算法提供了一个宝贵的起点,通过深入研究和实践,开发者可以更深入地理解这一经典视觉算法的工作原理,并将其应用于实际项目中。

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

    #### 九(续)、九(再续):sift算法的编译与实现 这部分内容涉及SIFT算法的具体实现细节,包括算法的编译配置和逐步的C语言实现。通过具体的代码示例,读者可以了解到SIFT算法是如何被实际应用到图像处理中的。 #...

    基于SIFT特征全景图像拼接(C语言实现)

    在实际操作中,使用C语言实现SIFT算法可能需要集成OpenCV库,OpenCV提供了一些预编译的函数和数据结构,可以简化SIFT算法的实现过程。例如,OpenCV中的`xfeatures2d`模块包含了SIFT检测器和描述符的实现,可以方便地...

    SIFT算法的C++实现源代码

    总的来说,这个C++实现的SIFT算法代码提供了从图像中提取稳定特征的能力,是进行计算机视觉研究和开发的重要工具。通过理解和掌握SIFT算法,开发者能够更好地进行图像处理和分析任务,实现各种创新的应用。

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

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

    Lowe SIFT 算法的源码,加了一个头文件,可以运行

    Lowe的尺度不变特征变换...通过阅读源码,你可以深入了解SIFT算法的实现细节,这对于进行图像处理、物体识别或者机器学习相关的研究工作非常有价值。同时,调试和配置项目环境也是一个锻炼实际编程技能的好机会。

    opencv249+C语言实现SIFT影像匹配

    **OpenCV 2.4.9与C语言实现SIFT影像匹配** SIFT(Scale-Invariant Feature Transform,尺度不变特征变换)是一种强大的图像处理技术...通过深入研究源代码,可以加深对SIFT算法以及OpenCV库的理解,提升图像处理技能。

    用于图像特征的提取算法sift程序

    压缩包中的文件名为“sift”,很可能包含的是实现SIFT算法的源代码或者预编译的可执行文件。对于开发者而言,这个资源可以帮助他们直接在自己的项目中集成SIFT算法,而无需从头开始编写代码。 总的来说,SIFT算法是...

    PythonSIFT_sift配准_SIFT算法python_sift_siftpython_nan.zip

    标题中的"PythonSIFT_sift配准_SIFT算法python_sift_siftpython_nan.zip"表明这个压缩包文件包含了与SIFT(尺度不变特征变换)算法相关的Python实现。SIFT是一种在图像处理和计算机视觉领域广泛应用的特征检测和描述...

    sift_修正版

    5. `exe`:这是一个可执行文件,可能是编译后的SIFT算法实现程序,用户可以直接运行来检测和提取图像中的SIFT特征。 6. `Release`:与`Debug`类似,这个文件夹包含了编译器在优化设置下生成的可执行文件和其他相关...

    VC7.1下实现的sift图像处理算法

    总结来说,这个项目为研究者和开发者提供了一个在旧版Visual Studio环境下实现的SIFT算法,便于理解算法原理并进行二次开发。对于学习图像处理和计算机视觉的初学者,这是一个很好的实践和学习资源。通过阅读和运行...

    计算机视觉SIFT算子OPENCV3.0详细实现(未调用opencv和sift相关的函数)

    3. **关键点方向分配**:每个关键点都有一个与之关联的方向,这是为了增强旋转不变性。这一步通常通过检测关键点周围的梯度方向分布并选择主方向来实现。 4. **关键点描述符生成**:在关键点周围,计算一组描述符...

    SiftGPU-V400.zip

    《SiftGPU-V400:GPU加速...总之,SiftGPU-V400项目是Changchang Wu对经典SIFT算法的一次GPU优化尝试,通过利用GPU的强大计算能力,显著提升了特征检测的速度,对于计算机视觉和图像处理领域的研究与实践具有重要意义。

    SIFT算法的MATLAB和VC联合编程

    SIFT(尺度不变特征变换)算法是计算机视觉领域的一个重要技术,主要用于图像处理中的关键点检测和描述子...通过深入研究和实践,你将能够熟练掌握SIFT算法,并能灵活运用到图像处理、目标识别、图像匹配等应用场景中。

    完整vc2005 vc2008 SIFT

    这是一套在Visual Studio 2005或2008环境下编译的项目,包含了SIFT算法的源代码,可以帮助开发者理解和应用SIFT算法。 【描述】中提到,这个SIFT的实现是由一位外国人编写,代码编写得清晰易懂,能够帮助读者深入...

    SIFT代码,来自lowe网页

    这意味着开发人员或研究人员可以在MATLAB中调用这些C代码,以便于实现SIFT算法并进行图像处理或分析任务,而无需完全用MATLAB重写算法,这提高了效率并可能优化性能。 **标签详解:** 1. **SIFT** - SIFT算法是...

    基于GPU得sift

    "基于GPU的SIFT"正是利用CUDA(Compute Unified Device Architecture,统一计算设备架构)技术,将SIFT算法的部分或全部步骤转移到GPU上执行,以实现高效的并行计算,显著提高运算速度,为实时应用提供了可能。...

    siftgpu-v400

    总之,SIFTGPU-V400作为一款高效的GPU加速库,极大地推动了SIFT算法在实际应用中的效能,为计算机视觉领域的研究和开发提供了强大的工具。随着GPU技术的不断进步和图像处理需求的日益增长,SIFTGPU-V400在未来将持续...

    vc++实现的sift源码

    在给定的“vc++实现的sift源码”中,我们可以深入了解SIFT算法的实现细节。 SIFT算法主要包括以下几个步骤: 1. **尺度空间极值检测**:SIFT算法首先通过高斯差分金字塔构建尺度空间,寻找那些在不同尺度上都存在...

Global site tag (gtag.js) - Google Analytics