VisualStudio2017+OpenCV3.2+robwhess-opensift配置

发布时间:2019-06-24 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了VisualStudio2017+OpenCV3.2+robwhess-opensift配置脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

由于作业需求需要使用sift算子作图像拼接,本打算用Cimg自己写一个sift,但由于参考robwhess的实现不仅代码实际上与robwhess的很相似(照着人家的轮子造轮子真是没意义),而且还有很多问题要改,处于时间考虑就暂时用robwhess的OPEnCV版本的sift算子。由于第一次使用vs+opencv所以顺便记录一下配置过程,对opencv配置不感兴趣的可以直接跳过。关于sift算法的讲解会在CImg版本完善后一起放出,目前告诉你sift用于提取出尺度无关、光照无关、具有旋转不变性的局部特征点。

Visual Studio 2017+OpenCV-3.2.0配置

由于重装过系统所以重新下载的Visual Studio,所以VS更新到了2017版本,对OpenCV的2.x版本都不再支持,被迫使用了3.2.0的最新版本(最大的坏处在于3.x中nonfree的模块被移除了)。

下载安装

下载这两个东西的过程就不必再提了,OpenCV记得下载安装文件而不是压缩文件,压缩文件中没有build文件夹。

Windows环境变量配置

将${你的OpenCV解压路径}opencvbuildx64vc14bin加入到系统变量Path中

Visual Studio配置

打开你需要使用OpenCV的项目,右击项目选择属性页打开。
在“VC++目录”中的“包含目录”一栏加入${你的OpenCV解压路径}opencvbuildinclude;${你的OpenCV解压路径}opencvbuildincludeopencv;${你的OpenCV解压路径}opencvbuildincludeopencv2。

VisualStudio2017+OpenCV3.2+robwhess-opensift配置

在"VC++目录"的“库目录”一栏加入${你的OpenCV解压路径}opencvbuildx64vc14lib。

VisualStudio2017+OpenCV3.2+robwhess-opensift配置

在“链接器”->“输入”的“附加依赖项”栏中加入之前库目录添加的那个lib文件夹下的两个lib文件,这里不需要加路径直接写文件名即可(OpenCV3.x省了很多lib,如果使用2.x这里有貌似38个lib要加)。

VisualStudio2017+OpenCV3.2+robwhess-opensift配置


到这里OpenCV的配置就完成了,可以上网随便找一个简单例子跑一下看看,最简单的比如读取一张图片并显示5000ms。

VisualStudio2017+OpenCV3.2+robwhess-opensift配置

robwhess-opensift配置

这里提一下,实际上OpenCV也是提供了SIFT和SURF算子的,但是在3.x的版本中这一块以及一些其他功能被移了出去,如果要用需要去gIThub额外下载opencv_contrib,下载下来后用@R_191_1512@把opencv下的sources重新编译一下再把opencv_contrib中的modules编译进去,这一块网上自己找教程吧,因为我一开始想这么做但是失败了。
如果是最新的robwhess的github上的sift,里面有用到linux系统的库函数,我懒得去研究windwos下怎么代替,所以找了旧版本的sift,也是在别人那里看到的,链接http://pan.baidu.com/share/li...
把这里的文件下载下来直接加到自己的项目里就好,其中所有的opencv头文件在原代码里都是直接include实际上需要修改成<opencvxxx>,然后运行一下看一看有什么问题看着提示改,这一块我怀疑每个人遇到的可能会不一样,我就提一下我去改动的地方。

关于cstdlib的noexcept的报错

robwhess是用C实现的sift,因为我打算用c++,所以要把所有.c文件改成.cpp文件

指针问题

c里void到其他类型的指针转换是不用显示声明的,但c++不行,所以所有calloc或malloc要在函数前面加上强制指针转换

CV_RGB和CVScalar的类型转换问题

本来CV_RGB是定义的宏实际调用的cvScalar的构造函数,所以你可以直接改成使用cvScalar的构造函数,同样有两个宏定义为CV_RGB的也可以直接改为cvScalar,不过要注意参数顺序是反过来的,CV_RGB的参数是r、g、b三个通道,但cvScalar是b、g、r

cvLine和cvEllipse函数未定义

OpenCV的3.x里似乎这两个画图的函数不在cxcore里了,include一下cv.h就可以正常使用这两个函数

cvRound,cvFloor,cvCeil宏无法找到

直接使用c++自己的round,floor,ceil函数替代即可

sift的使用

robwhess使用feature结构体存储的特征点,对于OpenCV的C版本图像的数据格式是IplImage,初始化图像以及一个feature的指针,调用sift_features()方法传入这两个数据,会返回特征点个数,使用imgfeatures.h中的draw_features、draw_oxfd_features、draw_lowe_features方法可以在图像中标注特征点,对于3.x版本使用cVARrToMat函数可以将IplImage数据格式的图像转为Mat格式,后者是C++中OpenCV存储图像的常见数据格式。draw_features的效果图如下

VisualStudio2017+OpenCV3.2+robwhess-opensift配置

脚本宝典总结

以上是脚本宝典为你收集整理的VisualStudio2017+OpenCV3.2+robwhess-opensift配置全部内容,希望文章能够帮你解决VisualStudio2017+OpenCV3.2+robwhess-opensift配置所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。