OpenCV2.1在VS2008下的配置基础
OpenCV是一个好东西,集成了很多图像处理相关的函数,但是很多人都提出安装不好,因此笔者在此做一个详细的解释。
1. 安装OpenCV 2.1
目前最新版本为OpenCV 2.1版,在http://www.opencv.org.cn/index.php/Download中可以下载到OpenCV for Windows(VC2008专用版)。先安装OpenCV 2.1版,假定安装目录为D:\Program Files\OpenCV2.1
2. 安装CMake 2.8.3
在http://www.cmake.org/cmake/resources/software.html 可以下载到CMake 2.8.3 Windows (Win32 Installer),安装到任意路径都可。
3. 编译OpenCV
用CMake导出VC++项目文件
·运行cmake-gui,在”Where is the source code:”一栏设置路径为OpenCV安装路径(本文档假定为D:\Program Files\OpenCV2.1),在OpenCV2.1目录下新建一个文件夹VC2008,在”Where to build the binaries”一栏设置路径为” D:/Program Files/OpenCV2.1/VC2008”
·点击configure,在弹出的对话框内选择Visual Studio 9 2008
·在点击Finish之后CMake就会开始配置文件,如果出现
Could not copy from: D:/Program Files/CMake 2.8/share/cmake-2.8/Templates/CMakeVSMacros2.vsmacros
to: C:/Users/ÕÅÖÇÓî/Documents/Visual Studio 2008/Projects/VSMacros80/CMakeMacros/CMakeVSMacros2.vsmacros
则表明CMake无法复制文件,很可能是Win7下的权限问题或者是中文用户名的问题,那么只需要自己手动将上述目录的文件复制到相应位置即可。
·当出现Configuring done时,再次点击Configure,然后点击Generate,如果出现Generating done,则证明已经生成完毕。
编译OpenCV Debug和Release版本库
完成以上步骤之后,将在D:\Program Files\OpenCV 2.1\VC2008目录下生成一个OpenCV.sln的文件,用VS2008打开,在Debug配置下选择“解决方案资源管理器”中的解决方案’OpenCV’,单击右键选择“重新生成解决方案”,如果没有错误的话,选择INSTALL项目,单击右键选择“重新生成解决方案”。
然后改变为Release配置,选择“解决方案资源管理器”中的解决方案’OpenCV’,单击右键选择“重新生成解决方案”,如果没有错误的话,选择INSTALL项目,单击右键选择“重新生成解决方案”。
此时,OpenCV的*d.dll(for debug)和*.dll(for release)将出现在D:\Program Files\OpenCV2.1\VC2008\bin目录中;OpenCV的*d.lib(for debug)和*.lib(for release)将出现在D:\Program Files\OpenCV2.1\VC2008\lib目录中;头文件*.h将出现在D:\Program Files\OpenCV2.1\VC2008\include\opencv中。至此,可以被VS2008调用的OpenCV动态链接库生成完毕。
4. 配置Windows环境变量Path
将D:\Program Files\OpenCV2.1\VC2008\bin加入Windows系统环境变量Path中
5. 为VS2008配置OpenCV环境
打开VS2008,选择菜单上的“工具-选项-工程和解决方案-VC++目录”
在“显示以下内容的目录”中选择“包含文件”,加入D:\Program Files\OpenCV2.1\VC2008\include\opencv
在“显示以下内容的目录”中选择“库文件”,加入D:\Program Files\OpenCV2.1\VC2008\bin
关闭VS2008
6. 使用OpenCV2.1编程
打开VC++ 2008,创建一个Win32控制台程序opencvhello;在菜单里面选择“项目-属性”,在“配置属性-链接器-输入”的“依赖附加项”中添加“cxcore210d.lib cv210d.lib highgui210d.lib”。在“配置属性-常规”的“字符集”中选择“使用多字节字符集”。
将cxcore210d.lib,cv210d.lib,highgui210d.lib三个文件复制到项目根目录下,源文件所在地址为D:\Program Files\OpenCV2.1\VS2008\bin
将一下代码复制到代码编辑框中:
#include "stdafx.h"
#include "highgui.h"
//所有的以新风格命名的函数都在 cv 命名空间中
//如果希望不要每次都输入 cv:: ,则可使用下面语句
//using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
const char* imagename = "d:\\lena.jpg";
cv::Mat img = cv::imread(imagename); // Matlab风格的 cvLoadImage 函数的另一种调用
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
if( !img.data ) // 检查是否正确载入图像
return -1;
cv::namedWindow("image", CV_WINDOW_AUTOSIZE); //创建窗口
cv::imshow("image", img); //显示图像
cv::waitKey();
return 0;
}
复制一张图片到“D:\\lena.jpg”单击调试运行,如果出现了刚刚那张复制的图片,则证明OpenCV调用运行成功。
以上程序在Win7 家庭普通版+Visual Studio 2008 专业版+OpenCV 2.1 for Windows(VC2008专用)+CMake 2.8.3 Windows (Win32 Installer)环境下调试通过。