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

如何使基于OpenCV库的人脸检测系统在其它机器上运行

2010-04-18 12:52 579 查看
这个问题纠结了很久,其实是个很简单的问题,但是在链接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)中添加

//刚开始设置成了#ifdef DEBUG_NEW,所以就一直没有成功在其它机器上运行。比如生成release版本的时候在其他机子运行总是提示缺少debug版本的动态链接库(如cv200d.dll等),但是放入debug版本的动态链接库也是无法运行,估计是系统混乱了。
#ifdef _DEBUG
#pragma comment(lib,"cxcore200d.lib")
#pragma comment(lib,"cv200d.lib")
#pragma comment(lib,"highgui200d.lib")
#else
#pragma comment(lib,"cxcore200.lib")
#pragma comment(lib,"cv200.lib")
#pragma comment(lib,"highgui200.lib")
#endif


二、设置动态链接库的引用路径

在我的电脑上,动态链接库或者静态链接库只需引用其中一个就行,所以这个引用路径不需配置也可以。不过也有人不设置这个路径就会无法正确配置并运行应用程序,所以最好在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目录中的动态链接库)全部拷贝到应用程序所在目录。至此把这些文件所在的文件夹拷到对方机子上就能够正常运行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: