sift源码+opencv+gtk+VS2013

       sift源码编译,其实不要叫做编译,因为我们没有把他编译成像opencv库那样来使用,我们是直接使用它的源码的。

这是我的结果:在项目的属性->配置属性->调试 右边找到命令参数输入两个项目下的两张照片 5.jpg 6.jpg 即可运行程序

sift源码+opencv+gtk+VS2013_第1张图片

sift源码+opencv+gtk+VS2013_第2张图片

Sift算法可能你懂,但是用代码实现就困难,所以直接使用别人的源码吧。

主要步骤看此文章,我就是按照这篇文章的步骤完成的,神操作

http://www.cnblogs.com/cql/archive/2013/05/23/3095749.html

http://blog.csdn.net/jiangsan870211/article/details/45460119

因为我的环境有点不一样,我就说说我遇到的一些奇葩问题吧(上面那个文章可能没有遇到的问题)。

Sift源码也使用了其他库的文件(opencv和gtk+)

所以先配置好opencv和gtk+因为opencv和gtk+都是已经被编译在windwos下的lib了。所以关于这两个库你有四个步骤需要完成:

1          找到bin文件夹,将其目录添加电脑的path变量中

2          含Include的文件夹目录添加

3          含lib的文件夹目录添加

4          连接器->输入添加

以上四步按照那个文章来就行没问题的。

好了,开始解决跑起来的一些列问题。

我的环境VS2013 系统windows2008  opencv2.4.9

再来运行sift里面含有main函数的文件(src中的match.c、dspfeat.c和siftfeat.c中都含有main函数,分别实现两张图片匹配、读取存在文件中的图像特征并显示和计算输入图像的SIFT特征,源文件中只能添加三个中的一个。我这里选择添加match.c)

 

错误    

1      error C4996: 'fopen': Thisfunction or variable may be unsafe. Consider using fopen_s instead. To disabledeprecation, use _CRT_SECURE_NO_WARNINGS. See online help fordetails.     e:\opencv\build\include\opencv2\flann\logger.h    66     1     siftTest2.0

 

解决方案:项目=》属性 =》c/c++  =》预处理器=》点击预处理器定义,编辑,加入_CRT_SECURE_NO_WARNINGS,即可。

 

2    5 error C2589: “(”:“::”右边的非法标记    e:\opencv\build\include\opencv2\flann\lsh_table.h    266     1     siftTest2.0

解决方案:删除std

 

3 我创建的工程名siftTest2.0,siftTest2.0.cpp文件自动生成且含有_Main函数,你需要注释掉这个文件里面所有的代码,只保留#include "stdafx.h",这样程序就可以从match.c开始执行。

 

这样你就可以完美使用sift源码:注意这里我们用的opencv和gtk+都是编译好的库,其实sift可以编译成库的,我们可以像使用opencv这个库一样的使用编译好的sift库。


你可能感兴趣的:(C++,opencv,sift)