OpenCV-Python 中文教程
OpenCV-Python 中文教程
目录
I 走进 OpenCV
II OpenCV 中的 Gui 特性
- 图片
4.1 读入图像
4.2 显示图像
4.3 保存图像
4.4 总结一下 - 视频
5.1 用摄像头捕获视频
5.2 从文件中播放视频
5.3 保存视频 - OpenCV 中的绘图函数
6.1 画线
6.2 画矩形
6.3 画圆
6.4 画椭圆
6.5 画多边形
6.6 在图片上添加文字 - 把鼠标当画笔
7.1 简单演示
7.2 高级一点的示例 - 用滑动条做调色板
8.1 简单演示
III 核心操作
- 图像的基础操作
9.1 获取并修改像素值
9.2 获取图像属性
9.3 图像 ROI
9.4 拆分及合并图像通道
9.5 为图像扩边(填充) - 图像上的算术运算
10.1 图像加法
10.2 图像混合
10.3 按位运算 - 程序性能检测及优化
11.1 使用 OpenCV 检测程序效率
11.2 OpenCV 中的默认优化
11.3 在 IPython 中检测程序效率
11.4 更多 IPython 的魔法命令
11.5 效率优化技术
IV OpenCV中的图像处理
- 颜色空间转换
13.1 转换颜色空间
13.2 物体跟踪
13.3 怎样找到要跟踪对象的 HSV 值? - 几何变换
14.1 扩展缩放
14.2 平移
14.3 旋转
14.4 仿射变换
14.5 透视变换 - 图像阈值
15.1 简单阈值
15.2 自适应阈值
15.3 Otsu’s 二值化
15.4 Otsu’s 二值化是如何工作的? - 图像平滑
16.1 平均
16.2 高斯模糊
16.3 中值模糊
16.4 双边滤波 - 形态学转换
17.1 腐蚀
17.2 膨胀
17.3 开运算
17.4 闭运算
17.5 形态学梯度
17.6 礼帽
17.7 黑帽
17.8 形态学操作之间的关系 - 图像梯度
18.1 Sobel 算子和 Scharr 算子
18.2 Laplacian 算子 - Canny 边缘检测
19.1 原理
19.2 OpenCV 中的 Canny 边界检测 - 图像金字塔
20.1 原理
20.2 使用金字塔进行图像融合 - OpenCV 中的轮廓
21.1 初识轮廓
21.2 轮廓特征
21.3 轮廓的性质
21.4 轮廓:更多函数
21.5 轮廓的层次结构 - 直方图
22.1 直方图的计算,绘制与分析
22.2 直方图均衡化
22.3 2D 直方图
22.4 直方图反向投影 - 图像变换
23.1 傅里叶变换
24 模板匹配 155
24.1OpenCV 中的模板匹配 . . . . . . . . . . . . . . . . . . . . . . 155
24.2多对象的模板匹配 . . . . . . . . . . . . . . . . . . . . . . . . . 158
25Hough 直线变换 160
25.1OpenCV 中的霍夫变换 . . . . . . . . . . . . . . . . . . . . . . 161
25.2Probabilistic Hough Transform . . . . . . . . . . . . . . . . 163
26Hough 圆环变换 165
27 分水岭算法图像分割 168
27.1代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28 使用 GrabCut 算法进行交互式前景提取 173
28.1演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
V 图像特征提取与描述 178
29 理解图像特征 178
29.1解释 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
30Harris 角点检测 181
30.1OpenCV 中的 Harris 角点检测 . . . . . . . . . . . . . . . . . 182
30.2亚像素级精确度的角点 . . . . . . . . . . . . . . . . . . . . . . . 184
31Shi-Tomasi 角点检测 & 适合于跟踪的图像特征 187
31.1代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
32 介绍 SIFT(Scale-Invariant Feature Transform) 190
33 介绍 SURF(Speeded-Up Robust Features) 195
33.1OpenCV 中的 SURF . . . . . . . . . . . . . . . . . . . . . . . 197
34 角点检测的 FAST 算法 200
34.1使用 FAST 算法进行特征提取 . . . . . . . . . . . . . . . . . . . 200
34.2机器学习的角点检测器 . . . . . . . . . . . . . . . . . . . . . . . 201
34.3非极大值抑制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.4总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.5OpenCV 中 FAST 特征检测器 . . . . . . . . . . . . . . . . . . 202
35BRIEF(Binary Robust Independent Elementary Features) 205
35.1OpenCV 中的 BRIEF . . . . . . . . . . . . . . . . . . . . . . 205
36ORB (Oriented FAST and Rotated BRIEF) 207
36.1OpenCV 中的 ORB 算法 . . . . . . . . . . . . . . . . . . . . . 208
37 特征匹配 211
37.1Brute-Force 匹配的基础 . . . . . . . . . . . . . . . . . . . . . 211
37.2对 ORB 描述符进行蛮力匹配 . . . . . . . . . . . . . . . . . . . 212
37.3匹配器对象是什么? . . . . . . . . . . . . . . . . . . . . . . . . 213
37.4对 SIFT 描述符进行蛮力匹配和比值测试 . . . . . . . . . . . . . 213
37.5FLANN 匹配器 . . . . . . . . . . . . . . . . . . . . . . . . . . 214
38 使用特征匹配和单应性查找对象 218
38.1基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
38.2代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
VI 视频分析 222
39Meanshift 和 和 Camshift 222
39.1Meanshift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
39.2OpenCV 中的 Meanshift . . . . . . . . . . . . . . . . . . . . 223
39.3Camshift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
39.4OpenCV 中的 Camshift . . . . . . . . . . . . . . . . . . . . . 226
40 光流 231
40.1光流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
40.2Lucas-Kanade 法 . . . . . . . . . . . . . . . . . . . . . . . . . 232
40.3OpenCV 中的 Lucas-Kanade 光流 . . . . . . . . . . . . . . . 232
40.4OpenCV 中的稠密光流 . . . . . . . . . . . . . . . . . . . . . . 235
41 背景减除 238
41.1基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
41.2BackgroundSubtractorMOG . . . . . . . . . . . . . . . . . 238
41.3BackgroundSubtractorMOG2 . . . . . . . . . . . . . . . . . 239
41.4BackgroundSubtractorGMG . . . . . . . . . . . . . . . . . 240
41.5结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
VII 摄像机标定和 3D 重构 243
42 摄像机标定 243
42.1基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
42.2代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
42.2.1设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
42.2.2标定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
42.2.3畸变校正 . . . . . . . . . . . . . . . . . . . . . . . . . . 247
42.3反向投影误差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
43 姿势估计 250
43.1基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
43.1.1渲染一个立方体 . . . . . . . . . . . . . . . . . . . . . . 252
44 对极几何(Epipolar Geometry ) 254
44.1基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
44.2代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
45 立体图像中的深度地图 259
45.1基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
45.2代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
VIII 机器学习 261
46K 近邻(k-Nearest Neighbour ) 261
46.1理解 K 近邻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
46.1.1OpenCV 中的 kNN . . . . . . . . . . . . . . . . . . . . 262
46.2使用 kNN 对手写数字 OCR . . . . . . . . . . . . . . . . . . . 266
46.2.1手写数字的 OCR . . . . . . . . . . . . . . . . . . . . . . 266
46.2.2英文字母的 OCR . . . . . . . . . . . . . . . . . . . . . . 268
47 支持向量机 270
47.1理解 SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
47.1.1线性数据分割 . . . . . . . . . . . . . . . . . . . . . . . . 270
47.1.2非线性数据分割 . . . . . . . . . . . . . . . . . . . . . . 271
47.2使用 SVM 进行手写数据 OCR . . . . . . . . . . . . . . . . . . 273
48K 值聚类 277
48.1理解 K 值聚类 . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
48.1.1T 恤大小问题 . . . . . . . . . . . . . . . . . . . . . . . . 277
48.1.2它是如何工作的? . . . . . . . . . . . . . . . . . . . . . 278
48.2OpenCV 中的 K 值聚类 . . . . . . . . . . . . . . . . . . . . . . 281
48.2.1理解函数的参数 . . . . . . . . . . . . . . . . . . . . . . 281
48.2.2仅有一个特征的数据 . . . . . . . . . . . . . . . . . . . . 282
48.2.3颜色量化 . . . . . . . . . . . . . . . . . . . . . . . . . . 286
IX 计算摄影学 288
49 图像去噪 288
49.1OpenCV 中的图像去噪 . . . . . . . . . . . . . . . . . . . . . . 289
49.1.1cv2.fastNlMeansDenoisingColored() . . . . . . . . 290
49.1.2cv2.fastNlMeansDenoisingMulti() . . . . . . . . . . 290
50 图像修补 294
50.1基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
50.2代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
X 对象检测 297
51 使用 Haar 分类器进行面部检测 297
51.1基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
51.2OpenCV 中的 Haar 级联检测 . . . . . . . . . . . . . . . . . . 299
OpenCV-Python 中文教程的更多相关文章
- 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构
知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...
- 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流
知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...
- 2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python
知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例P ...
- Python Kivy 中文教程:安装(Windows)
Kivy 是一套用于跨平台快速应用开发的开源框架,只需编写一套代码,便可运行于各大桌面及移动平台上(包括 Linux, Windows, OS X, Android, iOS, 以及 Raspberr ...
- Python消息队列工具 Python-rq 中文教程
原创文章,作者:Damon付,如若转载,请注明出处:<Python消息队列工具 Python-rq 中文教程>http://www.tiangr.com/python-xiao-xi-du ...
- 学习参考《Python基础教程(第3版)》中文PDF+英文PDF+源代码
python基础教程ed3: 基础知识 列表和元组 字符串 字典 流程控制 抽象(参数 作用域 递归) 异常 魔术方法/特性/迭代器 模块/标准库 文件 GUI DB 网络编程 测试 扩展python ...
- Python MoviePy中文教程导览及可执行音视频剪辑工具下载
☞ ░ 前往老猿Python博文目录 ░ <Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载>是老猿两个关于moviepy的专栏<PyQt+moviepy ...
- Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载
☞ ░ 前往老猿Python博文目录 ░ 一.简介 MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切.拼接.标题插入).视频合成(也称非线性编辑).视频处理或创建高 ...
- OpenCV Python教程(3、直方图的计算与显示)
转载请详细注明原作者及出处,谢谢! 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了. ...
- Python 官方中文教程(简)
Python 官方教程 前言 这是一次系统学习Python官方教程的学习笔记 整个教程一共16章, 在学习过程中记录自己不知道的和一些重要的知识, 水平有限, 请指正. Python3.7 官方教程. ...
随机推荐
- .net core中使用HttpClient碰到的问题:This instance has already started one or more requests. Properties can only be modified before sending the first request
项目里使用httpclient一般加staic或者单例来防止每次请求都会新建立一个连接,从而占用太多的服务器资源, 问题产生 但是今天新加的一个方法中每次需要请求不同的url,这时候就出现了错误: 就 ...
- python中的反射机制
转自https://www.cnblogs.com/renjie1105/p/15909285.html python反射简介 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需 ...
- 【LuckyFrame研究】环境准备
LuckyFrame官方使用手册:http://www.luckyframe.cn/book/yhsc/syschyy-24.html LuckyFrame在码云平台或是GitHub上都是分成二个项目 ...
- Identityserver4 ClientCredentials授权
转自:https://www.cnblogs.com/hyqq/p/14138024.html:侵删. Client Credentials 客户端应用不代表用户,客户端应用本身就相当于资源所有者 通 ...
- Linux系统解压zip包出现中文乱码问题
1. 使用指定GBK编码格式进行解压可以使用如下指定编码格式进行解压. unzip -O GBK 资料.zip 或者使用CP936也是可以指定GBK编码格式进行解压 unzip -O CP936 资料 ...
- SpringBoot笔记--配置文件分类+yaml相关知识+读取配置文件内容
配置文件 要是需要使用自己的配置替换默认配置时,需要使用后缀名为application.properties或者application.yml(application.yaml)进行配置 当然,几个文 ...
- Android笔记--在活动之间传递消息
显式Intent和隐式Intent Intent--各个组件信息沟通的桥梁 组成部分: 显式Intent:--精确匹配 具体实现: 1.在Intent的构造函数中指定 2.调用意图对象的setClas ...
- 自用nodejs安装笔记
下载Nodejs 进入Nodejs官网https://nodejs.org/zh-cn/ 下载 安装Node.js 检查Nodejs和npm包管理器是否安装成功 用管理员打开cmd控制台 命令行输入n ...
- 一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
上次给大家推荐过一个缓存中间件<一个C#开发的非常实用的缓存中间件>,今天再给大家推荐一个缓存中间件,两者功能差不多,都是提供统一接口.多级缓存.分布式缓存.支持多种Provider等. ...
- CAS 6.x + Delegated Authentication SAML2.0 配置记录
最近领导派了一个活儿, 需要把我们CAS系统的身份识别交给甲方的系统, 甲方的系统是SAML2.0的协议. 由于之前对SAML2.0协议了解不多,折腾了不少时间,在这里记录一下.以后忘掉还可以看看. ...