OpenCV-Python 中文教程
OpenCV官方教程中文版(For Python)
段力辉 译
为什么翻译此书?
段力辉
2014 年 2 月 16 日
1 为什么使用 Python
Python 作为一种高效简洁的直译式语言非常适合我们用来解决日常
工作的问题。而且它简单易学,初学者几个小时就可以基本入门。再加
上 Numpy 和 matplotlib 这两个翅膀,Python 对数据分析的能力不逊于
Matlab。Python 还被称为是胶水语言,有很多软件都提供了 Python 接
口。尤其是在 linux 下,可以使用 Python 将不同的软件组成一个工作流,
发挥每一个软件自己最大的优势从而完成一个复杂的任务。比如我们可以
使用 Mysql 存储数据,使用 R 分析数据,使用 matplotlib 展示数据,使用
OpenGL 进行 3D 建模,使用 Qt 构建漂亮的 GUI。而 Python 可以将他们
联合在一起构建一个强大的工作流。
2 为什么使用 Python-OpenCV
虽然 python 很强大,而且也有自己的图像处理库 PIL,但是相对于
OpenCV 来讲,它还是弱小很多。跟很多开源软件一样 OpenCV 也提供了
完善的 python 接口,非常便于调用。OpenCV 的稳定版是 2.4.8,最新版
是 3.0,包含了超过 2500 个算法和函数,几乎任何一个能想到的成熟算法
都可以通过调用 OpenCV 的函数来实现,超级方便。
3 为什么是这本书
但是非常可惜关于在 Python 下使用 OpenCV 的书,除了这本在线教
程之外,仅有一个 100 多页的书 opencv computer vision with python(本
1
书虽然挺好的,但是不够全面,不能让读者完全了解 opencv 的现状)。而
我翻译的这本书是来源于 OpenCV 的官方文档,内容全面,对各种的算
法的描述简单易懂,而且不拘泥于长篇大论的数学推导,非常适合想使用
OpenCV 解决实际问题的人,对他们来说具体的数学原理并不重要,重要
是能解决实际问题。
在国内这本书可以说是第一本 Python_OpenCV 的译作。
4 本书的时效性
本书的编写时针对最新的 OpenCV3.0 的,本版本还没有正式发布(但
很稳定),其中的内容页非常新,甚至用到了 2012 年才提出的算法。因此
本书的时效性上应该是没有问题的。
5 本书的目标读者
本书针的读者是高校学生,科研工作者,图像处理爱好者。对于这些
人群,他们往往是带着具体的问题,在苦苦寻找解决方案。为了一个小问
题就让他们去学习 C++ 这么深奥的语言几乎是不可能的。而 Python 的悄
然兴起给他们带来的希望,如果说 C++ 是 tex 的话,那 Python 的易用性
相当于 word。他们可以很快的看懂本书的所有代码,并可以学着使用它们
来解决自己的问题,同时也能拓展自己的视野。别人经常说 Python 不够
快,但是对于上面的这些读者,我相信这不是问题,现在我们日常使用的
PC 机已经无比强大了,而且绝大多数情况下不会用到实时处理,更不会在
嵌入式设备上使用。因此这不是问题。
OpenCV-Python
段力辉
2014 年 1 月 30 日
1
目录
I 走进 OpenCV 10
1 关于 OpenCV-Python 教程 10
2 在 Windows 上安装 OpenCV-Python 11
3 在 Fedora 上安装 OpenCV-Python 12
II OpenCV 中的 Gui 特性 13
4 图片 13
4.1 读入图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 显示图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3 保存图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 总结一下 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 视频 18
5.1 用摄像头捕获视频 . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2 从文件中播放视频 . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3 保存视频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 OpenCV 中的绘图函数 24
6.1 画线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 画矩形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.3 画圆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.4 画椭圆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.5 画多边形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.6 在图片上添加文字 . . . . . . . . . . . . . . . . . . . . . . . . . 26
7 把鼠标当画笔 28
7.1 简单演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2 高级一点的示例 . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8 用滑动条做调色板 32
8.1 代码示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
III 核心操作 36
2