您的位置:首页 > 运维架构

OpenCV在Visual Studio中的属性表配置方法(通用)

2015-12-25 19:50 351 查看
 

OpenCV在Visual Studio中的属性表配置方法(OpenCV3.0及之前版本,VS2013及之前版本)

1.     opencv环境变量设置

可以先看一下第五章和第六章,稍微看一下有些许印象就行,然后再从头看~~

 

 

右击我的电脑à属性à高级系统设置à环境变量

双击系统变量path,在最后填入解压后的bin目录D:\Program Files\opencv\build\x86\vc10\bin(根据个人解压opencv后的具体目录填写,最后为bin即可,注意与上一个目录中间用英文半角分号隔开,)如:

 
然后在用户变量中新建OPENCV_DIR,变量值如下,到build目录,

 
环境变量就这些就够了,重启电脑生效(不重启也行,如果不行,再重启试试)

2.     新建win32控制台程序

由于打开属性管理器的具体配置需要先打开一个项目,这里我们先新建个项目,打开文件à新建à项目àVC++àwin32控制台应用程序,在下面输入名称testopencv,点击下一步,选择空项目

永久配置opencv

打开视图à属性管理器,点开如下图

 

一次性配置opencv

 

网上有一种方法是直接修改Microsoft.Cpp.Win32.user,但是配置链接器的时候debug版本和release版本的附加依赖项都得一次性加进去,我不知道会不不会出问题,所以为保险起见,我分别在debug|win32和release|win32下分别新建了属性表opencv_debug和opencv_release,当然,大家也可以试试网上的方法,具体配置的内容都一样,下面以opencv_debug为例,在debug|win32上右击,然后点击添加新项目属性表,填入opencv_debug即可

 

下面双击open_debug,选择VC++目录,点击包含目录,点击右侧下拉按钮à编辑,点击第一个新行按钮,输入$(OPENCV_DIR)\include, 类似添加$(OPENCV_DIR)\include\opencv和 $(OPENCV_DIR)\include\opencv2,点击确定,应用
 

 

点击库目录,点击右边的下拉按钮à编辑,添加新行$(OPENCV_DIR)\x86\vc10\lib

确定,应用

 

点击链接器à输入,右侧附加依赖项,下拉按钮à编辑,输入如下:

opencv_calib3d247d.lib

opencv_contrib247d.lib

opencv_core247d.lib

opencv_features2d247d.lib

opencv_flann247d.lib

opencv_gpu247d.lib

opencv_highgui247d.lib

opencv_imgproc247d.lib

opencv_legacy247d.lib

opencv_ml247d.lib

opencv_objdetect247d.lib

opencv_ts247d.lib

opencv_video247d.lib

点击确定,应用,后面的d表示debug版,

完成后在opencv_debug上右击,点击保存opencv_debug,opencv_release的基本配置同opencv_debug,只是链接器依赖项要换成

opencv_calib3d247.lib

opencv_contrib247.lib

opencv_core247.lib

opencv_features2d247.lib

opencv_flann247.lib

opencv_gpu247.lib

opencv_highgui247.lib

opencv_imgproc247.lib

opencv_legacy247.lib

opencv_ml247.lib

opencv_objdetect247.lib

opencv_ts247.lib

opencv_video247.lib

这样,我们可以看到新建项目下有两个属性表opencv_debug.props和opencv_release.props,我们可以把他们复制到别的地方,其他项目用到时只要附加进来即可,当然,如果是直接修改Microsoft.Cpp.Win32.user的话,便无需再附加,每次环境会自动加载。附加过程如下:

在以上配置过程中,大家可以直接用我做好的属性表,只是需要把用户环境变量OPENCV_DIR的值改成自己实际的build目录即可,这就是配置时使用相对位置的好处。

3.     测试

下面点击视图à解决方案资源管理器,点开testopencv,在源文件上右击选择添加à新建项,选择C++文件,名称输入testopencv.cpp,输入如下代码

#include<highgui.h>
intmain(int argc,char **argv)
{
         IplImage *img=cvLoadImage("lena.jpg");/*载入图像;把lena.jpg复制到项目所在的目录,一般为…\projects\testopencv\testopencv,或者写lena.jpg所在的绝对路径*/
         cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);//创建窗口
         cvShowImage("Example1",img);//显示图片
         cvWaitKey(0);//等待操作
         cvReleaseImage(&img);//释放图片
         cvDestroyWindow("Example1");//销毁窗口
}

4.     个人总结

以上内容摘自某网友的良心总结。
我使用的OpenCV版本是2.4.11,因此,只需将后缀改成2411就可以了,其他都一样,下面总结一下,总共有三种配置方法,当然,前期的设置系统的环境变量这一步都是一样的,不同的是进入到vs项目中之后的设置。
A.       方法一
正如上文所说的,如果在属性管理表中(Property Manager)中,右键点击Debug|win32,然后选择添加新的属性表,如下图所示,那么这种方式,最后保存新建的属性表时,会保存到该项目下(当前项目),如下图示
 
这样,以后,如果要再新建项目时,必须都要从该项目中把这两个属性表拷进来,然后在属性管理表中添加已有属性表,这种方法,虽然看起来,每次都要添加比较麻烦,但是,这个是比较稳妥的,因为,并没有向系统加入文件;
B.       方法二
还有一种方式,是在Microsoft.Cpp.Win32.user.props上右击选择添加新的属性表,这种新增加属性表之后,保存新添加的属性表,系统不会将其保存到当前项目中,而是会保存到C:\Users\Happy\AppData\Local\Microsoft\MSBuild\v4.0下,也就是Microsoft.Cpp.Win32.user.props所在的地方,如下图示。然后,在属性管理表中,新添加的opencv2411_debug和opencv2411_release隶属于Microsoft.Cpp.Win32.user.props,而不是和前面那种是与Microsoft.Cpp.Win32.user.props并列的,如图示,这种配置方法,是真正永久性的,以后再建新项目时,不用再把这两个属性表拷进到新项目中,只要建立新项目,就会自动在属性管理表中添加这两个引用属性表(当然是在Microsoft.Cpp.Win32.user.props下,而不是与之并列)。

C.       方法三
还有一种方法是直接对Microsoft.Cpp.Win32.user.props进行更改,不用新建,双击这个,然后也会跳出一个设置框,设置方法和上面提到的一样了,如果直接对该文件进行设置,我想应该得把debug和release的库文件都放进去,才能既有debug的,也有release的属性表(Microsoft.Cpp.Win32.user只有一个),这种配置方法我还没试,应该也是永久性的,以后建立项目不用拷来拷去,只是,这个方法有个缺点就是对vs的默认属性表做了更改,而且,需要把debug和release放入到同一个属性表中,所以还是算了,就采用前两中方法了。
以上提到的Microsoft.Cpp.Win32.user.props,是vs2010 默认的用户属性表。关于其的一些介绍:http://blog.csdn.net/zeusuperman1/article/details/9794111
 
综合考虑,第一种方法必须每次将这两个属性表拷入到当前新建项目中,并在属性管理表中添加引用,因此,需要将这两个属性表专门拷出来,放在一个地方,以后新建项目时方便使用,也就是,有点麻烦;而第三种方法,之前提过了,需要对系统文件进行更改。综合考虑,还是方法二号,虽然会将两个属性表保存到C:\Users\Happy\AppData\Local\Microsoft\MSBuild\v4.0(该文件夹默认是隐藏文件夹),但时并没有改变原有文档文件的值,还是可以的,而且,debug和release是可以分开的,虽然每次新建项目时,在属性管理表中,不管在debug还是release下,都有这两个文件,如图示,但是我想,这也是很好解决的,如果在出现编译问题,直接在属性管理表中,删除其中一个引用就是了,多方便~(以后如需要再添加,直接添加在Microsoft.Cpp.Win32.user.props上右键添加已有属性表就可以了,如果没有直接进入到所在路径,可以自己进入到C:\Users\Happy\AppData\Local\Microsoft\MSBuild\v4.0中寻找)。而且,最重要的一点是,以后新建项目,再也不用不厌其烦的添加、引用属性表了。

关于OpenCV属性表配置的其他链接:http://www.cnblogs.com/csulennon/p/3758234.html
http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html
http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html

5.     其他

1.        点击opencv提取文件时,不能直接添加到C盘,如果要,得以管理员身份执行(或者先添加到其他盘,然后拷过去也行),如果不以管理员身份而直接添加到C盘中某个文件夹,提取文件,会找不到的,会提取到一个隐藏得很深的文件夹中:C:\Users\Happy\AppData\Local\VirtualStore,这个文件夹,也是一个默认隐藏的文件夹。参考链接:http://blog.sina.com.cn/s/blog_65a95e6f0101qmtm.html
2.        在opencv提取库文件中,有x64和x86,但一般都选择x86,
(可能最新版opencv和vs中会有改变OpenCV3.0之后(见下面第四条),VS2013之后,这种最新版的配置方法,不在本教程考虑范围之内~~)
3.        VS编号的对应关系:

参考链接:http://www.educity.cn/wenda/248379.html
4.        OpenCV版本与VS版本问题
这个是OpenCV2.4.11下的一个库文件夹(x86下),发现直到vc12(对应VS2013),直观感觉是只能配置到VS2013了,至于更新的版本,不知道可不可以,不甚了解,保守的话,最好不用了。

这个是OpenCV3.1.0的(好像是2015.12.21号才出的,非常新的了),这个只有x64,没有x86,x64下有如下图示的东西(最新版OpenCV里也许是保存库文件的格式不同,比如,多进行了编译过程之类的,这样,可以直接在程序中调用,不需额外编译,总之,比2.4.11版本少了200多兆,具体不甚了解)

貌似这个最新的,直观上与时俱进了,只能配置vs2013和2015的(能不能配置低的还不清楚的)。
版本区别

而且,好像配置方式还不一样了,3.1.0的x64里的文件与2.4.11里不同,貌似要用到CMake之类的东西,还没试过,不太确定之前的配置方法是否适合,目前网上,最多的好像是到3.0.0的配置,3.1.0的配置好像还没看到(或许是没看到吧),3.0.0的配置好像还是中规中矩的。
可以参看:https://github.com/Itseez/opencv/wiki/ChangeLog。不知道有没有什么信息。深的就不知道了~
 
OpenCV3.0之前的版本大概都有300多兆(350兆左右),之后更新的版本,越来越小,只有100多兆了,可见,做了很大的改变,我想应该是库文件的形式是不同了,具体还未深入了解,以上总结都是基于网上各种方法的,适合opencv3.0及之前,VS2013及之前的,更新版本的配置就无能为力了~~再次感谢诸多网友提供的帮助,我也来反馈一下~~
 
如有错误,请不要见怪~~~多多包涵~~~
2015.12.25

6.     附录

OpenCV2.4.11的库文件(将这些添加到附加依赖项中,第二章中给的不全,不同版本的OpenCV,将2411改成对应版本就是了,比如在第二章中,用到的是2.4.7版本):

 

Debug:

 

opencv_ml2411d.lib

opencv_calib3d2411d.lib

opencv_contrib2411d.lib

opencv_core2411d.lib

opencv_features2d2411d.lib

opencv_flann2411d.lib

opencv_gpu2411d.lib

opencv_highgui2411d.lib

opencv_imgproc2411d.lib

opencv_legacy2411d.lib

opencv_objdetect2411d.lib

opencv_ts2411d.lib

opencv_video2411d.lib

opencv_nonfree2411d.lib

opencv_ocl2411d.lib

opencv_photo2411d.lib

opencv_stitching2411d.lib

opencv_superres2411d.lib

opencv_videostab2411d.lib

 

 

Release:

 

opencv_ml2411.lib

opencv_calib3d2411.lib

opencv_contrib2411.lib

opencv_core2411.lib

opencv_features2d2411.lib

opencv_flann2411.lib

opencv_gpu2411.lib

opencv_highgui2411.lib

opencv_imgproc2411.lib

opencv_legacy2411.lib

opencv_objdetect2411.lib

opencv_ts2411.lib

opencv_video2411.lib

opencv_nonfree2411.lib

opencv_ocl2411.lib

opencv_photo2411.lib

opencv_stitching2411.lib

opencv_superres2411.lib

opencv_videostab2411.lib
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: