VS2010安装OpenCV2.1方法

来源:互联网 发布:保姆 知乎 编辑:程序博客网 时间:2024/06/06 04:58

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://neocv.blogbus.com/logs/65020560.html

原文忘记在哪看到的了,此处将原文稍作修改,使其更易阅读。

前期准备
首先在SourceForge上下载OPENCV 2.1版的源代码文件(要下那个.ZIP文件,那个VS2008只能用于VS2008,有点废话。。。)
然后我们来到CMAKE的官方网站下载CMAKE的2.8.1版
http://www.cmake.org/files/v2.8/cmake-2.8.1-win32-x86.exe
接下来,我们在http://www.threadingbuildingblocks.org/uploads/77/151/3.0/tbb30_20100406oss_win.zip
这里下载INTEL TBB 3.0(其实不下这个也可以,官网介绍它是个多核的库,充分发挥多核性能,OpenCV2.1估计新增加的支持吧,反正都是INTEL自家的东东,装上研究下也无妨,而且如今的CPU基本都是多核了)
到目前为止,所有的准备工作都已经做好啦(VS2010自己先装好)

CMAKE过程
接下来,我们按照顺序,首先安装CMAKE 2.8.1,然后解压OPENCV 2.1到你将要放置OPENCV的地方,接着,解压INTEL TBB 3.0,我是将OPENCV和TBB文件夹都放在C:/下。
打开CMAKE 2.8.1,在Where is the source code后面填写(或者选择)OPENCV 2.1的安装目录,在Where to build the binaries里填写你将要编译好的OPENCV 2.1 FOR VS2010解决方案的文件夹(比如C:/OpenCV/vs2010),接着点击Configure按钮,如果你刚开始在Where to build the binaries里填写的目录是不存在的,CMAKE将会询问你是否新建一个以此为名称的文件夹,点击"是"继续,在后续出现的对话框中选择Visual Studio 10,下面的选项选择Use default native compilers,点击Finish继续。
过30秒左右之后会出现一个配置窗口(此处注意在CMAKE配置的时候是不能够打开VS2010的),然后勾选BUILD_SHARED_LIBS,BUILD_TESTS,OPENCV_BUILD_3DPARTY_LIBS,以及下面的WITH_JASPER,WITH_JPEG,WITH_PNG,WITH_TBB(一般这个没默认选上),和WITH_TIFF选项,勾好后再次点击Configure,之后再配置窗口最上面会出现TBB_INCLUDE_DIR-NOTFOUND字样的红色选项,此处为CMAKE找不到INTEL TBB的包含文件为之所致,将INTEL TBB 3.0里面的INCLUDE文件夹路径(注意是INCLUDE,不是INCLUDE里面的子文件夹)定位到该配置属性的路径里,再次点击Configure,在TBB_LIB_DIR处又会出现红色一行,此处为INTEL TBB的库文件位置,此处必须将路径定位到含有LIB文件的位置,比如我的安装位置是C:/Intel TBB 3.0/lib/ia32/vc10,也就是说,在lib文件夹下会有子文件夹,必须定位到子文件夹对应的VC版本文件夹里去,这里由于是配置VS2010,所以我们选择VC10文件夹,ia32子文件夹是32位系统,此处应根据对应操作系统选择。
然后,我们再次点击Configure,此时所有红色行已经变为白色,同时在下方的信息里面会有一条为Use TBB:YES的字样,证明我们已经将INTEL TBB配置完毕,然后点击Generate,完成后在生成文件夹下会出现一个VS2010的解决方案文件OPENCV.SLN。

VS2010配置
双击打开OPENCV.SLN后,出现OPENCV 2.1的所有工程项目,先不要着急编译,首先点击Solution Explorer里面的Property Manager(下面的选项卡),依次展开ALL_BUILD—Debug|Win32—右键单击Microsoft.Cpp.Win32.user,选择Properties,然后选择VC++ Directories,在Executable Directories里面将INTEL TBB 3.0的可执行路径(bin)填写到里面,此处与LIB一样,必须定位到VC10才可以,例如我的是C:/Intel TBB 3.0/bin/ia32/vc10,将Include Directories定位到Intel TBB的Include文件夹即可无需再往深入定位,在Library Directories里填写Intel TBB的LIB文件位置,定位到VC10文件夹,然后单击确定之后,将选项卡切回到Solution Explorer。
将编译模式切换为Debug模式,右键单击Solution OpenCV,选择Rebuild Solution,编译后再右键单击INSTALL项目,选择Build,之后将编译模式切换为Release模式,重新编译解决方案,再编译INSTALL项目,在你的解决方案文件夹里面会生成bin目录,include目录,lib目录。
在VS2010里切回到Property Manager,像上面一样展开Microsoft.Cpp.Win32.user后选择Properties,然后再VC++ Directories里面增加OPENCV 2.1的可执行文件(bin),包含文件(include/opencv),以及库文件(lib),源文件(src/cv、src/cvaux、src/cxcore、src/highgui等),确定,退出并保存更改。到此OPENCV 2.1配置完成。
以后每次建立OPENCV项目时需都要在项目里面添加依赖库,方法是在解决方案管理器里面右键单击项目,选择Properties,然后在Linker里面选择Input,在依赖库里添加OPENCV的LIB文件夹里的LIB文件名称(比如什么cv210d.dll,根据需要填写),文件名后面有小写字母d的为Debug库,没有的为Release库。
原文没说明的(重要!):作者居然没说全局变量的添加!这样的后果就是编译完后运行程序会提示缺少DLL文件。方法是在全局变量(我的电脑属性里)里添加C:/OpenCV/vs2010/bin和C:/Intel TBB 3.0/bin/ia32/vc10即可。

后记:我按上面方法安装完后,运行最后还是提示缺少一个叫msvcr90d.dll的文件,上网GOOGLE了一下,是个VS历来都有的BUG(没想到VS2010也没解决!!!),目前还没解决,但是不妨碍程序运行,就是每次都提示很是恼人,下面是MSDN上找的解决办法,还没来得及翻译:
Go to  "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library" and set Multi-threaded Debug (/MTd) did build generated error messages...

then reset "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library" to Multi-threaded Debug DLL (/MDd) what it was originally, worked.

如果还是不行,试着把安装VS2010和你创建工程的路径所在分区转成NTFS格式的。(这招对我不管用,因为我所有分区都是NTFS的T_T)

凝霜 注:最好不要修改警告级别。。。保持默认的即可。。。否则。。。错误信息。。。呵呵。。用过Level 4的人懂的,你会有调试STL的感觉。。。