OpenCV 入门教程
½者:于仕琪
shiqi.yu@szu.edu.cn
http://www.opencv.org.cn
2012 年 8 月
版权所有© 于仕琪
本½品采用知识共享½名-相同方式共享 4.0 ½际许可协议进行许可。
1
前 言
OpenCV
是一个广受欢迎的开源计算机视觉库,它提供了很多½数,实现了
很多计算机视觉算法,算法从最基本的滤波到高级的物½检测皆有涵盖。很多
初学者希望快速掌握
OpenCV
的½用方法,½往往会遇到各种各样的困难。其
实仔细分析,造成这些困难的原因有两类:第一类是
C/C++编程基础不过关;
第二类是不了解算法原理。解决这些困难无非提升编程½力,以及提升理论基
础知识。提升编程½力需要多练习编程,提升理论知识需要系统学习《数字图
像处理》《计算机视觉》和《模式识别》等课程,所有这些½不½一蹴而就,
、
需要耐下心来认真修炼。
同时我们也需要认识到
OpenCV
只是一个算法库,½为我们搭建计算机视觉
应用提供“砖头”
。我们并不需要完全精通了算法原理之后才去½用
OpenCV,
只要了解了“砖头”的功½,就可以动手了。在实践中学习才是最高效的学习
方式。本小册子希望为初学者提供引导,½初学者快速了解
OpenCV
的基本数
据结构以及用法。
此外,如您发现有错误之处,欢迎来信指正。
于仕琪
深圳大学
插播广告:欢迎有½力、有激情以及对计算机视觉有兴趣的同学报考我的
研究生。欲了解详情可以访问深圳大学招生½
http://zsb.szu.edu.cn/
或者
给我发 email。
2
目½
第
1
章
1.1
1.2
1.3
1.4
1.5
预备知识
............................................................................................... 5
编程的流程........................................................................................
5
什么叫编辑........................................................................................
6
什么叫编译........................................................................................
6
什么叫连接........................................................................................
7
什么叫运行........................................................................................
7
1.6 Visual C++是什么 .................................................................................. 8
1.7
1.8
头文件................................................................................................
9
库文件..............................................................................................
10
1.9 OpenCV
是什么
................................................................................... 11
1.10
1.11
什么是½令行参数..........................................................................
12
常见编译错误..................................................................................
13
1.11.1
找不到头文件
......................................................................... 13
1.11.2
拼写错误
................................................................................. 14
1.12
1.13
第
2
章
常见链接错误..................................................................................
15
运行时错误......................................................................................
17
OpenCV
介绍
................................................................................... 19
2.1 OpenCV
的来源
................................................................................... 19
2.2 OpenCV
的协议
................................................................................... 19
第
3
章
3.1
图像的基本操½
................................................................................. 21
图像的表示......................................................................................
21
3.2 Mat
类
................................................................................................. 23
3.3
创建
Mat
对象
................................................................................. 24
3.3.1
构造½数方法
........................................................................... 24
3.3.2 create()½数创建对象 ............................................................... 25
3.3.3 Matlab
风格的创建对象方法
................................................... 26
3
3.4
3.5
矩阵的基本元素表达......................................................................
26
像素值的读写..................................................................................
27
3.5.1 at()½数 ...................................................................................... 28
3.5.2
½用迭代器
............................................................................... 29
3.5.3
通过数据指针
........................................................................... 30
3.6
选取图像局部区域..........................................................................
32
3.6.1
单行或单列选择
....................................................................... 32
3.6.2
用
Range
选择多行或多列
....................................................... 33
3.6.3
感兴趣区域
............................................................................... 33
3.6.4
取对角线元素
........................................................................... 34
3.7 Mat
表达式
......................................................................................... 34
3.8 Mat_类 ................................................................................................ 36
3.9 Mat
类的内存管理
............................................................................. 38
3.10
3.11
输出..................................................................................................
40
Mat
与
IplImage
和
CvMat
的½换
................................................. 42
3.11.1 Mat
½为
IplImage
和
CvMat
格式
.......................................... 42
3.11.2 IplImage
和
CvMat
格式½为
Mat ........................................... 42
第
4
章
4.1
数据获取与存储
................................................................................. 44
读写图像文件..................................................................................
44
4.1.1
读图像文件
............................................................................... 44
4.1.2
写图像文件
............................................................................... 45
4.2
读写视频..........................................................................................
47
4.2.1
读视频
....................................................................................... 47
4.2.2
写视频
....................................................................................... 49
4
第1章 预备知识
OpenCV
是一个功½强大的计算机视觉库,要用½它,除了要具有相关的计
算机视觉理论知识外,还需要具有一定的编程½力。本书½者通过对
OpenCV
中
文论坛中的大量问题观察,发现有很大比例的问题是因为用户对
C/C++语言不熟
练,
导致出错,
或出错后不知如½解决。
如果对
C/C++语言不熟悉,
那½用
OpenCV
时会满头雾水瞎摸索,费心费力。
在这一章中,
将介绍一些编程的基本概念,让读者对编程的流程有一个基本
了解。这样在出现错误时,可以快速确定错误的类型,并知道该如½解决。
1.1
编程的流程
一个编程的基本流程包括编辑、编译和连接三大步骤。其流程图如图
1.1
所
示。
编辑
编辑
a.cpp
b.cpp
编译
编译
a.obj
b.obj
opencv_core.lib
连接
main.exe
5
评论