初学OpenCV,纠结了半天终于安装配置完成。
本文借用了两篇博客的内容,原文地址:http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=15481;
http://blog.csdn.net/shuxiao9058/article/details/7525067
下载OpenCV
- 从http://sourceforge.net/projects/opencvlibrary/下载 OpenCV for Windows。
- 运行 OpenCV-2.4.2.exe 解压并放到某个目录下,例如
D:\Program Files\OpenCV2.4.2
(无需运行setup.exe,解压则可)。解压后的目录结构如下图。
安装CMake(不打算自己编译无需安装)
从 http://www.cmake.org/cmake/resources/software.html 下载 Windows (Win32 Installer) 安装。
编译OpenCV(非必需步骤)
用CMake导出VC++项目文件
- 运行cmake-gui,设置where is the source code路径为OpenCV安装路径(本文档假定安装位置为:
D:\Program Files\OpenCV2.4.2
),并创建子目录D:\Program Files\OpenCV2.4.2\build\my
,并将cmake的"where to build the binaries"设置为这个目录。
- 然后点 configure,在弹出的对话框内选择 Visual Studio 10。
- 你可根据你的系统修改选项,修改后再次选择“Congfigure”,完成后选择“Generate”。
编译 OpenCV Debug和Release版本库
完成上一步骤后,将在D:\Program Files\OpenCV2.4.2\build\my目录下生成OpenCV.sln的VC Solution File,请用VS++ 10打开OpenCV.sln,然后执行如下操作:
- 在Debug下,选择Solution Explorer(解决方案资源管理器)里的 Solution OpenCV(解决方案“OpenCV”),点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。
- 在Release下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。
全部运行完毕后,针对你的系统的OpenCV库就生成了。
设置环境变量
在桌面上右击“计算机”,选择“属性-高级系统设置”,进入“高级”选项卡,“环境变量-系统变量”,如图4所示:
图4 系统环境变量
编辑“Path”变量,在最后添加OpenCV的bin目录所在全路径。如我应该添加以下两个变量:“D:\Program Files\OpenCV\opencv2.4.2\build\x86\vc10\bin”,这里要注意的是变量之间是以分号“;”分隔的(玩过Linux的都知道Linux下系统变量之间是以冒号“:”分隔的)。
修改完系统环境变量后,注销一下电脑,或者重启“explorer.exe”进程(如图5所示)即可,这里不过多赘述。
Visual Studio 2010下配置OpenCV目录
糟糕,当我们打开Visual Studio 2010依次选择“工具-选项-项目和解决方案-VC++ 目录”的时候,系统会提示如图9所示信息:
提示我们单击“?”获取更多信息,经过艰辛寻找原因后,我们知道项目属性表是扩展名为 .props 的基于 XML 的文件。 它使您能为生成工具(如编译器或链接器)指定开关,并创建 用户定义的宏。
经过查找文件后,我发现在“C:\Users\jiya\AppData\Local\Microsoft\MSBuild\v4.0”目录(你可能要修改一下路径)下有项目默认配置文件。
因此,我们可以编辑“Microsoft.Cpp.Win32.user.props”文件以添加相关的VC++ 目录。其中<ExecutablePath>和</ExecutablePath>标签之间是指可执行文件目录、<IncludePath>和</IncludePath>标签之间是指包含文件目录、<LibraryPath>与</LibraryPath>标签之间是指库文件目录,本人编辑后的内容如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ExecutablePath>D:\Program Files\OpenCV\opencv2.4.2\build\x86\vc10\bin;$(ExecutablePath)</ExecutablePath>
<IncludePath>D:\Program Files\OpenCV\opencv2.4.2\build\include;D:\Program Files\OpenCV\opencv2.4.2\build\include\opencv;D:\Program Files\OpenCV\opencv2.4.2\build\include\opencv2;D:\Program Files (x86)\tbb40_20120201oss\include;$(IncludePath)</IncludePath>
<ReferencePath>$(ReferencePath)</ReferencePath>
<LibraryPath>D:\Program Files\OpenCV\opencv2.4.2\build\x86\vc10\lib;D:/Program Files (x86)/tbb40_20120201oss/lib/ia32/vc9;$(LibraryPath)</LibraryPath>
<SourcePath>$(SourcePath)</SourcePath>
<ExcludePath>$(ExcludePath)</ExcludePath>
</PropertyGroup>
</Project>
新建项目测试
“新建项目”,选择“Visual C++-空项目”,输入项目名“OpenCV”,“添加新项-代码-C++ 文件”,输入文件名“OpenCV.cpp”,编辑代码,这里本人使用的测试代码如下所示:
- #include <opencv/highgui.h>
-
- int main( int argc, char** argv ) {
- IplImage* img = cvLoadImage( argv[1] );
- cvNamedWindow( "OpenCV", CV_WINDOW_AUTOSIZE );
- cvShowImage( "OpenCV", img );
- cvWaitKey(0);
- cvReleaseImage( &img );
- cvDestroyWindow( "OpenCV" );
-
- return ( 0 );
- }
(2)添加附加依赖项有两种方法:
法1:右击项目名称,选择“属性-配置属性-链接器-输入”,将“opencv_highgui242d.lib opencv_core242d.lib opencv_ml242d.lib opencv_imgproc242d.lib”(这里注意Visual Studio 2010下依赖项之间是以分号间隔的,因此应为“opencv_highgui242d.lib;opencv_core242d.lib;opencv_ml242d.lib;opencv_imgproc242d.lib;”,如图10所示)拷贝到“附加依赖项”栏中,确定即可。
法2:在上述代码头文件下方添加以下代码:
- #pragma comment( lib, "opencv_highgui242d.lib" )
- #pragma comment( lib, "opencv_core242d.lib" )
- #pragma comment( lib, "opencv_ml242d.lib" )
- #pragma comment( lib, "opencv_imgproc242d.lib" )
(3)编译即可,上述程序在main函数中使用了参数,如果想调试的话,可以右击项目名称,选择“属性-配置属性-调试”,在命令参数项中输入参数(如“D:\\Lena.jpg”,注意这里是双反斜线,起转义作用,如图11所示)即可。
(4)运行效果截图,如图12所示,至此则说明OpenCV运行正常。
备注:在配置OpenCV的时候你可能需要intel TBB,但是这不是必需的。如果在编译程序的时候提示“找不到tbb_debug.dll”等问题,请下载intel TBB并像上面一样配置环境变量及VC++目录(注意要注销一下电脑或者重启“explorer.exe”进程)。如找不到tbb_debug.dll文件的问题,在Path环境变量中添加路径D:\Program Files\opencv\build\common\tbb\ia32\vc10
本人亲测此安装配置在该环境下可行,其中测试时碰见一个问题,程序调试没问题,但是图像无法显示,窗口全灰,找了半天发现是自己犯了一个低级错误,图片资源错放在了工程目录下,没有放进项目代码文件夹下。