1、下载及安装

OpenCV是一套开源免费的图形库,主要有C/C++语言编写,官网: http://opencv.org/ 。在 http://opencv.org/downloads.html 可以找到个版本和各种平台的程序包。OpenCV的Windows平台安装包是放在SourceForge.net网站。

我下了2.4.4版,大概217M。安装包其实就是一个压缩包,安装过程就是解压到某个文件夹。我是安装到 E:\Soft\opencv 目录,安装后文件夹如下:

我们只需要关注“build”文件夹即可,其他的可以不用管。“build”文件夹编译后的文件,我们可以直接使用。打开“build”文件夹,如下

编写过C++程序的都知道,要使用别人的编写好的DLL,那么需要三种文件,即头文件、后缀名为“lib”的链接文件,后缀名为"dll"的动态库文件。如果使用静态编译方式,那么需要头文件和静态库文件。X86是32位操作系统的库,X64是64位操作系统的库。

(1)“build\x86\vc10\bin”目录下放的是OpenCV运行时所需的动态运行库,

(2)“build\x86\vc10\lib”目录放的是编译OpenCV程序时所需的的动态链接库,

(3)“build\x86\vc10\staticlib”目录方式的静态编译时OpenCV所需要的静态链接库,如果是静态编译,运行时则不需要“build\x86\vc10\bin”目录的DLL文件,但编译后的文件较大。

由于我使用VS2010,所以只关注目录 E:\Soft\opencv\build\x86\vc10 。为了使VS2010可以编译OpenCV程序,我们需要对VS2010做一些设置,主要是让VS2010能找到OpenCV的头文件和链接库。在“OpenCV安装目录\build\docs”目录下有个名为“opencv_tutorials.pdf”的PDF文档,里面的1.5节“How to build application with OpenCV inside the Micorosoft Visual Studio”说明了如何配置VS2010。

如果想一次配置对所有的C++项目都适用,可以按如下配置:

1、在VS2010打开任何一个C++项目,然后选择“视图”=》“其他窗口”=》“属性管理器”,如下图:

打开的属性管理器窗口如下:

2、在打开的属性管理器窗口中,展开“Degug|Win32”节点,双击“Micorsoft.Cpp.Win32.user”会打开全局属性设置窗口,

(1)在左边选择“VC++目录”;

(2)在右边“包含目录”中加上OpenCV的头文件目录,我的头文件目录是放在“E:\Soft\opencv\build\include”,这个根据OpenCV的安装目录,一般在build\include目录;

(3)在右边“库目录”中加上OpenCV的链接库目录,我的VS2010库目录是放在“E:\Soft\opencv\build\x86\vc10\lib”,这个是根据OpenCV的安装目录和IDE版本决定,根据自己的情况选择。

对“Release|Win32”节点下的“build\x86\vc10\bin”也做同样配置。

2、第一个OpenCV程序

通过以上配置,OpenCV的开发环境已经搭建起来,下面我们来写第一个OpenCV HelloWorld程序。

打开VS2010,新建一个Win32控制台应用程序

新建后的项目如下:

双击“HelloWorld.cpp”文件,输入如下内容

//C++输入输出库头文件
#include <iostream>
//OpenCV核心库头文件
#include <opencv2\core\core.hpp>
//OpenCV图形处理头文件
#include <opencv2\highgui\highgui.hpp> //OpenCV核心动态链接库,和core.hpp头文件对应,d代表调试版本
#pragma comment(lib,"opencv_core242d.lib")
//OpenCV图形处理动态链接库,和highgui.hpp头文件对应,d代表调试版本
#pragma comment(lib,"opencv_highgui242d.lib") int _tmain(int argc, _TCHAR* argv[])
{
//窗口名称
std::string windowName = "HelloWorld";
//图像名称
std::string imgFile = "opencv-logo.png";
//读入图像
cv::Mat image = cv::imread(imgFile,CV_LOAD_IMAGE_COLOR);
//如果无法读取图形
if(!image.data)
{
std::cout << "无法打开图像文件" <<std::endl;
system("PAUSE");//暂停窗口
return -;
}
//创建一个新窗口
cv::namedWindow(windowName,CV_WINDOW_AUTOSIZE);
//将图像显示都新创建的窗口中
cv::imshow(windowName,image);
//等待,直到用户按任意键时退出
cv::waitKey(); return ;
}

如果编译无错误,要运行程序,还要复制一些必要的文件:

(1)在OpenCV的目录下的doc文件夹有一个名为"opencv-logo.png"的图像文件,将其复制到“HelloWorld”项目的文件夹下,

(2)到OpenCV安装目录\build\x86\vc10\bin\ 复制三个文件 opencv_core242d.dll、opencv_highgui242d.dll、tbb_debug.dll 三个文件到解决方案文件夹下的Degug目录,也就是编译后可执行文件所在的目录。

如果一切正常,运行后的效果如下:

3、OpenCV学习资源

2.3.2版本的帮助文档翻译 http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html ,是OpenCV安装目录\build\docs\opencv_tutorials.pdf文档的中文翻译。

http://www.opencv.org.cn/ 也是学习OpenCV的好地方。

http://wiki.opencv.org.cn/index.php OpenCV的各种中文资料。

http://opencv.org/documentation.html 官方的在线帮助文档。

http://www.sigvc.org/bbs/ 视觉计算论坛。

OpenCV学习笔记(一)安装及运行第一个OpenCV程序的更多相关文章

  1. OpenCV 学习笔记 01 安装OpenCV及相关依赖库

    本次学习是基于Window10进行的.语言为python3. 1 与opencv相关的库简介 1.1 numpy numpy 是 OpenCV 绑定 python 时所依赖的库,此意味着numpy在安 ...

  2. [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. 【Spring学习笔记-2】Myeclipse下第一个Spring程序-通过ClassPathXmlApplicationContext加载配置文件

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  4. 【rust】rust安装,运行第一个Rust 程序 (1)

    安装 Rust 在 Unix 类系统如 Linux 和 macOS 上,打开终端并输入: curl https://sh.rustup.rs -sSf | sh 回车后安装过程出现如下显示: info ...

  5. OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要

    如今python火啊.每次OpenCV自带的ml模块都让我直呼坑爹,索性准备用python来做OpenCV后期的机器学习算法的处理.于是赶紧拿起这本书读读. 适合OpenCV和python都有一定基础 ...

  6. OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解

    原文:http://blog.csdn.net/yang_xian521/article/details/7107786 我记得开始接触OpenCV就是因为一个算法里面需要2维动态数组,那时候看cor ...

  7. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  8. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  9. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

随机推荐

  1. NSData、NSString 、 NSFileManager

      1 NSData和NSMutableData的基本使用 1.1 问题 NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,leng ...

  2. [poj2762] Going from u to v or from v to u?(Kosaraju缩点+拓排)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud     Going from u to v or from v to u? Tim ...

  3. 子元素用margin-top 为什么反而作用在父元素上?对使用margin-top 的元素本身不起作用?

    在这个说明中,“collapsing margins”(折叠margin)的意思是:2个或以上盒模型之间(关系可以是相邻或嵌套)相邻的margin属性(这之间不能有非空内容.padding区域.bor ...

  4. laravel 心得

    1.安装 使用composer安装laravel ,切换到你想要放置该网站的目录下,运行命令: composer create-project laravel/larevel project 4.1 ...

  5. popup

    http://vast-engineering.github.com/jquery-popup-overlay/ http://photoswipe.com/

  6. 启动PL/SQL Developer 报字符编码不一致错误,Database character set

    错误内容: Database character set (AL32UTF8) and Client character set (ZHS16GBK) are different. Character ...

  7. NET Core的知识

    NET Core的基础知识补遗 阅读目录 前言 在.NET Core之前 在.NET Core起步 .NET Core 1.0 .NET平台 开发环境 FAQ 写在最后 回到目录 前言 .NET Co ...

  8. underscoreJS的Collections 的API

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Qt Project的持续集成方案

    作者:齐亮链接:http://www.zhihu.com/question/24314354/answer/27547787来源:知乎著作权归作者所有,转载请联系作者获得授权. PETER HARTM ...

  10. WPF笔记(2.6 ViewBox)——Layout

    原文:WPF笔记(2.6 ViewBox)--Layout 在Canvas外面包一层ViewBox,可以使Canvas内的控件填充整个ViewBox,并随着ViewBox的大小变化而同步变化,这是因为 ...