windows下安装opencv

opencv(open source computer vision library)是一个基于C/C++语言的开源图像函数处理库。

它的主要模块包括:

  • cv —— 核心函数库
  • cvaux —— 辅助函数库
  • cxcore —— 数据结构与线性代数库
  • highgui —— GUI函数库
  • ml —— 机器学习函数库

opencv是跨平台的,支持包括windows、unix以及android等平台。下图是英文wiki上一张关于opencv概述的图。关于opencv的一系列功能以及特性,本文不再赘述,如果要了解,请移步至opencv的中文站点介绍

opencv overview

本文将会讲解在wndows上如何使用VS2010安装opencv,并以一个简单的程序作为结束。opencv在近期推出了2.3版本,不过本文仍然以2.2版本为例。其他安装请参考中文安装页面

安装方式有两种选择:

  • 直接下载OpenCV-2.2.0-win32-vs2010.exe文件。可以在这页找到下载。这种方式很傻瓜,直接双击安装即可。安装过程中勾选“Add OpenCV to system PATH for all users”选项。(当然也可以安装完毕添加,在环境变量path中添加“<安装路径>/opencv/bin/”) 
  • 另外一种是源码安装(压缩包地址也可以在这里找到)。如果你想用IPP、CUDA或者Qt自定义安装opencv,你就需要从源码安装。

下面着重说一下源码安装的步骤。首先是编译。

第一步是用CMake导出VC++项目文件。

  • 首先需要下载CMake(下载地址)。
  • 安装完成后,打开cmake-gui,设置路径为OpenCV安装路径(本文档假定安装位置为:C:\OpenCV2.2,即下载的压缩包解压地址),并创建子目录C:\OpenCV2.2\vs2010,用于存放编译结果。
  • 然后点 configure,在弹出的对话框内选择 Visual Studio 10(这里根据你的visual studio的版本确定,vs2010对应的是10,而2008对应的9)。完成后选择“Generate”。 

导出完成后,转到项目文件(本例在C:\OpenCV2.2\vs2010下),打开OpenCV.sln文件。分别在debug和release下编译。

完成后就是配置环境变量了。将“C:\OpenCV2.2\vs2010\bin”添加至windows系统环境变量path中。

以上这部分可以参考中文安装文档

最后,我们需要配置visual studio的开发环境。

对于vs2008或者以下版本。选择 Tools -> Options -> Projects and Solutions -> VC++ Directories(中文版为:工具 --> 选项 --> 项目和解决方案  --> vc++目录)。

  • Show directories for选择executable files,加入目录 C:\OpenCV2.2\vs2010\bin
  • Show directories for选择include files,加入目录 C:\OpenCV2.2\vs2010\include\opencv,和C:\OpenCV2.2\vs2010\include
  • Show directories for选择library files,加入目录C:\OpenCV2.2\vs2010\lib

对于vs2010,这个编辑功能已经被否决。这时候随便打开一个项目。接着打开视图-->其他窗口-->属性管理器(property manager)。接着项目-->Debug | Win32 --> Microsoft.Cpp.Win32.user,右击属性。在“vc++目录”做以上修改。

opencv install config

最后我们以一个打开图片的程序为结尾。

  • 打开VS2010,创建一个Win32控制台程序opencvhello。
  • 选择Solution Explorer(解决方案)里的opencvhello项目,点击鼠标右键,选择Properties,在[链接器 LINKER]的[输入INPUT]中
    为项目的Debug配置增加 [依赖的库 Additional Dependencies]:opencv_core220d.dll、opencv_highgui220d.lib和opencv_imgproc220d.lib
    (注意,文件名opencv_core220d.dll 可能是opencv_***d.lib等形式,具体应查看C:\OpenCV2.2\vc2010\lib。如果使用的是OpenCV2.1,应输入:opencv_core210d.lib、opencv_highgui210d.lib和opencv_imgproc210d.lib )
    为项目的Release配置增加[依赖的库 Additional Dependencies]:opencv_core220.dll、opencv_highgui220.lib和opencv_imgproc220.lib (注意:如果使用的是OpenCV2.1,应输入:opencv_core210.lib、opencv_highgui210.lib和opencv_imgproc210.lib)
    在 [配置属性 Configuration Properties]- [General] -[字符集 Character Set] 修改为使用“多字节字符集” (由于2008默认是以Unicode字符集编译的)
  • 编译运行下面的例程(就以我以前文章经常用的例子中的图片,主要要将lam.jpg文件放在项目目录下)。
/***********************************************************************
 * OpenCV 2.0 测试例程
 ***********************************************************************/
 
#include "stdafx.h"
#include "highgui.h"
 
//所有的以新风格命名的函数都在 cv 命名空间中
//如果希望不要每次都输入 cv:: ,则可使用下面语句
//using namespace cv;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    const char* imagename = "lam.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;
}

图片为:

lam.jpg 

大家可以尝试运行。

标签

赞这篇文章

分享到

10个评论

  1. Donggile

    我安装的是 vs2010和opencv2.20 安装步骤跟你的一模一样 但是执行代码的时候 就会报错
    LINK : fatal error LNK1104: 无法打开文件“opencv_core220d.dll”
    这个 错误 请问这个应该怎么解决

  2. Donggile

    我的问题解决了
    我在LINKER 后面 添加了 所有的 .lib 就可以
    还是很感谢您的 安装步骤 很给力

  3. Rong

    无法打开包括文件:“highgui.h”: No such file or directory
    非常感谢您的安装步骤,对我这样的初学者的帮助很大。
    一路坐下来,最后出现了这个问题,不知怎么解决,求您给分析一下,谢谢。

  4. Rong

    现在上一个问题弄好了,我在CMake里把原先发红的项弄弄成不发红的了。也不出现打不开“highgui.h”的问题了。
    但是现在无法识别cv这个命名空间了。麻烦您给分析一下。

  5. Rong

    http://www.cnblogs.com/freedomshe/archive/2012/04/25/2470540.html
    我按照这个网址弄的,好了,可能是叠加效果吧,我不敢保证是不是只做他的不按您的做就可以了(我指的是略过CMake那部分)。
    我安装的版本比他高一些,就把240改为243了。

给作者留言

关于作者

残阳似血(@秦续业),程序猿一枚,把梦想揣进口袋的挨踢工作者。现加入阿里云,研究僧毕业于上海交通大学软件学院ADC实验室。熟悉分布式数据分析(DataFrame并行化框架)、基于图模型的分布式数据库和并行计算、Dpark/Spark以及Python web开发(Django、tornado)等。

博客分类

点击排行

标签云

扫描访问

主题

残阳似血的微博