Q2: 如何在项目中添加自定义的Opencv模块? 您需要将自定义模块的源代码添加到项目中,并在项目属性中配置相应的包含目录和库目录,确保您的模块依赖于已经配置好的OpenCV库。
如何本地安装SIFT
SIFT的实现有很多版本,具体方式都是那么几个,找个好用的不太容易,因为对于代码不熟练者各种版本用起来都有点水土不服,需要调整调整才行。 本人是在VS2010下使用的Rob Hess的源码。
一、前提
安装Opencv,详见:VS2010+Opencv-2.4.0的配置攻略(该版本SIFT是基于Opencv的)。
下载SIFT源码,见Rob Hess的主页(别告诉我不懂英文不知道下载链接在哪,下那个Windows VC++的版本 sift-latest_)。
二、测试
1、解压sift源码,发现有如下文件:
其中有3个是解决方案文件夹:siftFeat、match和dspFeat,siftFeat工程是做SITF特征提取的,一般只会用到这个案例,match是利用SIFT特征做图像匹配的,desFeat没用过不说了。
所有源代码(包括上面3个工程的main)都在文件夹外面,就是那些成对的.h和.c了。
2、可以先试着跑跑siftFeat。
打开,配置好Opencv在VS2010中的环境参数(VS2010+Opencv-2.4.0的配置攻略中有述,注意include里面要添加/include/opencv,因为sift源码直接引用了/include/opencv目录下的头文件)。
编译报错:1> : error LNK2001: 无法解析的外部符号 _va_end1> : error LNK2001: 无法解析的外部符号 _va_start
说好了源码里面有些东西是要改的:在utils.c中#include
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 __cplusplusexternC{#endif
和
#ifdef __cplusplus }#endif
之间。例如:
... #ifdef __cplusplusexternC{#_features( IplImage* img,structfeature**feat ); _sift_features( IplImage* img,structfeature** feat,intintvls,doublesigma,doublecontr_thr,intcurv_thr,intimg_dbl,intdescr_width,intdescr_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个文件就够了
怎样在PC上打开OpenCV ?
一、PC上安装Opencv
1、安装环境是:Ubuntu13.10(内核是3.3的),Opencv-2.4.3
由于在计算机上安装,所以很简单,只需要将集成的库先利用apt-get来安装,到最后安装Opencv的时候能够找到ffmpeg或其它库的依赖库就好了。列举需要安装的库:
最后一个命令安装了很多库,但是有可能输入进去会报错,这也是依赖库的问题。 解决方法就是一个一个的安装,这样每个库安装都会检测依赖关系,要么修复要么下载依赖库就不会出现依赖的问题了。
2、下面就是Opencv的压缩包进行解压
解压到了/opt/zedboard/opencv_pc/下,当然也可以根据需要自定义,因为这是一个编译的目录,最终都是要安装到/usr/local下的
3、安装
解压之后进入到OpenCV-2.4.3的文件夹,创建一个build文件夹,在build文件夹下执行:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTAll_PREFIX=/usr/local ../
因为不是交叉编译,所以不用设置编译器,后面的PREFIX是在设置安装目录,一定不能把最后的“ ../”给省略了!然后利用安装的cmake-gui命令,在图形界面下对Opencv进行配置。
此时会弹出一个图形界面,选择路径,一个是Opecv-2.4.3,一个是下面的Build,上面需要修改的只是最后面的WITH_XXX,根据安装的库,选择如下图所示:
选择完后,点击Configure,之后会报出一些消息,尽管会提示有一些文件找不到,但是不用管它,再点击Generate,然后关闭对话框。最后输入:
make install
注意,在make的时候需要很久,但是一定要关注是否100%的编译通过了,有些时候在等待的时候就去做别的事情的,回来的时候没有看有没有报错,直接就make install。 实际上,如果中间编译出错,那么只安装了部分的库,而且还不能用。 正确编译的最后几行代码应该如下图所示:
如何在vs2010下配置opencv
随笔- 17文章- 1评论- 101 VS2010+Opencv-2.4.0的配置攻略摘要:在VS2010环境中应用Opencv,网上找到了很多配置方法,但大多都是老版本的,很多新手面对最新版本的Opencv无从下手,就给新手童鞋写了这么一篇超级详细的配置攻略,贴上来共享。
要强调一点的就是,这种配置方法里使用的Opencv库是直接安装Opencv时候自带的DLL库,在你的VS里面是无法调试Opencv的。
如果需要调试Opencv,必须应用自己编译出来的Opencv库,具体怎么编译自己的Opencv库,网上有很多例子,再此不再赘述。
1、下载软件下载OpenCV-2.4.0,双击解压到%opencv%(凡是出现%opencv%的地方均替换为你自己opencv的路径全名,如D:\program\opencv)。
下载VS2010,安装。
2、配置OpenCV环境变量计算机->(右键)属性->高级系统设置->高级(标签)->环境变量->(双击)path(用户,系统里面的path任选其一)->在变量值里面添加” %opencv%\build\x86\vc10\bin”和”%opencv%\build\common\tbb\ia32\vc10”(里面的%opencv%记得换成自己的opencv路径。
例如我的:D:\program\ifly\bin;D:\Program Files (x86)\opencv\build\x86\vc10\bin;D:\Program Files (x86)\opencv\build\common\tbb\ia32\vc10)。
3、配置工程的opencv依赖(每次新建工程都要重新配置,要执行此步骤请先跳到第4步建立工程)1)、项目(菜单项)->…属性->VC++目录:需要配置“包含目录”和“库目录”两项。
2)、配置“包含目录”项:添加行”%opencv%\build\include”即可。
但在运行别人的opencv项目时,可能别人直接引用了上述目录的子目录路径,如果出现include错误,则再添加”%opencv%\build\include\opencv”和(或)”%opencv%\build\include\opencv2”,即可解决问题。
3)、配置“库目录”项:添加行”%opencv%\build\x86\vc10\lib”即可。
4)、配置连接器:项目(菜单项)->…属性->连接器->输入->附加依赖项针对debug配置添加以下库:opencv_____________如果是release配置(以后再说,只需要添加上面的debug配置就行了现在),则添加:opencv_____________4、用VS2010新建控制台工程测试:1)、文件->新建->项目->Visual C++->Win32 控制台应用程序(输入名称test)2)、确定->下一步->附加选项选“空项目”->完成3)、解决方案资源管理器->源文件(右键)->添加->新建项4)、Visual C++->C++文件:输入名称test点添加5)、粘贴下面的代码,保存复制代码 1 #include














发表评论