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. javaScript给元素添加多个class

    <html> <head> <style type="text/css"> .div2{ font-size:16px; color:orang ...

  2. SPOJ 4110 Fast Maximum Flow (最大流模板)

    题目大意: 无向图,求最大流. 算法讨论: Dinic可过.终于我的常数还是太大.以后要注意下了. #include <cstdio> #include <cstring> # ...

  3. css架构目标:预测,重用,扩展,维护

    请参看下面链接: CSS架构目标:预测.重用.扩展.维护

  4. Linux安装系统注意事项及系统初始化

      Linux安装系统注意事项 1.分区 学习用途: /boot:200M /swap :内存的1到2倍 /:根据需要分配大小,比如虚拟机下总空间是15G,那么可以分配8——10G跟/分区,如果是生产 ...

  5. ssh整合web.xml过滤器和监听器的配置 .

    延迟加载过滤器 Hibernate 允许对关联对象.属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行.如果 Service 层返回一个启用了延迟 ...

  6. php正则验证sql方注入

    <?php function inject_check($Sql_Str) {//自动过滤Sql的注入语句. $check=preg_match('/select|insert|update|d ...

  7. 关于bootstrap列偏移的两种方式

    第一种方式: <div class="col-md-2 col-md-offset-9"> <input type="text" class= ...

  8. Method Resolution Order – Python类的方法解析顺序

    在支持多重继承的编程语言中,查找方法具体来自那个类时的基类搜索顺序通常被称为方法解析顺序(Method Resolution Order),简称MRO.(Python中查找其它属性也遵循同一规则.)对 ...

  9. 关于onclick中的event对象和element对象

    event.srcElement:引发事件的目标对象,常用于onclick事件. event.fromElement:引发事件的对象源,常用于onmouseout和onmouseover事件. eve ...

  10. #1042 - Can't get hostname for your address

    my.ini 或 my.cnf 末尾添加 skip-name-resolve 并重启MySQL服务器 ok!