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 官方教程. ...
随机推荐
- h5移动端开发经验积累篇
h5键盘控制 const el = document.documentElement || document.body const originHeight = el.clientHeight win ...
- 前端复习之Ajax,忘完了
1 * Day01: 2 * Ajax 3 * Asynchronous JavaScript and XML 4 * 直译中文 - JavaScript和XML的异步 5 * (不严格的定义)客户端 ...
- MYSQL5.7实现递归查询
根据父id查出所有子级,包括子级的子级,包括自身的id sys_tenant_company_relation为关联表, company_id为子id,parent_company_id为父id SE ...
- Strimzi-Kafka-Operator外围小记
Strimzi-Kafka-Operator 从不同的角度看下Operator解决的问题 Kafka管理Operator-https://github.com/strimzi/strimzi-kafk ...
- sql处理重复的列,更好理清分组和分区
一.分组统计.分区排名 1.语法和含义: 如果查询结果看得有疑惑,看第二部分-sql处理重复的列,更好理清分组和分区,有建表插入数据的sql语句 分组统计:GROUP BY 结合 统计/聚合函数一起使 ...
- RunnerGo相较于Jmeter优劣势分析
RunnerGo是一款基于go语言研发的开源测试平台.在这里我想从性能测试方面.结构方面以及功能方面对比两款产品. 性能方面: Runner基于go语言研发,相对于jmeter来说更轻量级.所以性能测 ...
- AI 影评家:用 Hugging Face 模型打造一个电影评分机器人
本文为社区成员 Jun Chen 为 百姓 AI 和 Hugging Face 联合举办的黑客松所撰写的教程文档,欢迎你阅读今天的第二条推送了解和参加本次黑客松活动.文内含有较多链接,我们不再一一贴出 ...
- 思必驰周强:AI 和传统信号技术在实时音频通话中的应用
如何用 AI 解决声音传输&处理中的三大问题?三大问题又是哪三大问题? 在「RTE2022 实时互联网大会」中,思必驰研发总监 @周强以<AI 和传统信号技术在实时音频通话中的应用> ...
- Solon2 接口开发: 分布式 Api Gateway 开发预览
建议使用专业的分布式网关产品,比如: nginx apisix [推荐] k8s ingress controller 等... 对 Solon 来讲,只有 Gateway:它调用本地接口时,则为本地 ...
- Mac连接Win的方法
前言 我们都知道,Mac和Win还是非常不一样的,作为Macdows双修选手,我今天给大家介绍一些从Mac连接Win的方法. Win的RDP 由于Win默认未安装ssh,我们最常使用的连接方式则是使用 ...