这个问题纠结了很久,其实是个很简单的问题,但是在链接OpenCV静态库的时候出现了一点小错误,所以一直没有成功在其它机器上正常运行。现在解决了,所以记录下来,让一些刚入门的兄弟能够不重蹈覆辙。为了讲述方便,先介绍一下运行环境:OpenCV2.0+vs2005,OpenCV2.0的安装路径为c:\opencv2.0。
成功编译运行基于OpenCV库的应用程序所需要的vs2005设置:
一、引用静态链接库
有两种方法:
1.在vs2005的"项目"-"(项目名)属性"-"配置属性"-"链接器"-"输入"-"附加依赖库"中根据release(或debug)配置属性添加相应的静态链接库,release状态就添加cv200.lib,cxcore200.lib,highgui200.lib,debug状态就添加cv200d.lib,cxcore200d.lib,highgui200d.lib。
2.不用再附加依赖库中添加静态库,只需要在代码文件中(如:stdafx.h)中添加
二、设置动态链接库的引用路径
在我的电脑上,动态链接库或者静态链接库只需引用其中一个就行,所以这个引用路径不需配置也可以。不过也有人不设置这个路径就会无法正确配置并运行应用程序,所以最好在ide中设置好动态链接库的引用路径。也有两种方法:
1.在"工具"-"选项"-"项目和解决方案"-"VC++目录"中在右上角的"显示一下内容的目录"组合框中选择"可执行文件",在这里依次添加两行,并选择OpenCV2.0的动态链接库的位置如:c:\opencv2.0\bin\release和c:\opencv2.0\bin\debug
2.在计算机的系统环境变量中的"Path"这个变量添加OpenCV2.0的动态链接库的位置,如:c:\opencv2.0\bin\release;c:\opencv2.0\bin\debug
三、设置OpenCV库头文件的包含路径
在"工具"-"选项"-"项目和解决方案"-"VC++目录"中在右上角的"显示一下内容的目录"组合框中选择"包含文件",在这里依次添加两行,并选择OpenCV2.0的头文件的位置如:c:\opencv2.0\include\opencv
到此就可以成功编译和运行基于OpenCV的应用程序了。
要想在其它机子上运行自己的人脸检测系统,得把haarcascade_frontalface_alt.xml放到应用程序的所在目录,并且在代码中修改加载分类器的路径,可以用GetModuleFileName方法获得路径,然后重新编译一遍代码,再把动态链接库的文件cv200.dll,cxcore200.dll,highgui200.dll拷贝到应用程序的目录下面,如果对方机子没有装Visual c++ 2005 redistribute,则必须为对方安装Visual c++ 2005 分发包或者将MFC动态库(C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86路径下的Microsoft.VC80.MFC和Microsoft.VC80.CRT目录中的动态链接库)全部拷贝到应用程序所在目录。至此把这些文件所在的文件夹拷到对方机子上就能够正常运行了。