基本信息
源码名称:opencv-python 中文教程
源码大小:6.20M
文件格式:.pdf
开发语言:Python
更新时间:2019-08-08
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
目录 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 www.linuxidc.com 9 图像的基础操作 36 9.1 获取并修改像素值 . . . . . . . . . . . . . . . . . . . . . . . . . 36 9.2 获取图像属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 9.3 图像 ROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 9.4 拆分及合并图像通道 . . . . . . . . . . . . . . . . . . . . . . . . 40 9.5 为图像扩边(填充) . . . . . . . . . . . . . . . . . . . . . . . . 41 10图像上的算术运算 43 10.1图像加法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10.2图像混合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10.3按位运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 11程序性能检测及优化 47 11.1使用 OpenCV 检测程序效率 . . . . . . . . . . . . . . . . . . . 47 11.2OpenCV 中的默认优化 . . . . . . . . . . . . . . . . . . . . . . 48 11.3在 IPython 中检测程序效率 . . . . . . . . . . . . . . . . . . . 49 11.4更多 IPython 的魔法命令 . . . . . . . . . . . . . . . . . . . . . 51 11.5效率优化技术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 12OpenCV 中的数学工具 53 IV OpenCV 中的图像处理 54 13颜色空间转换 54 13.1转换颜色空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 13.2物体跟踪 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 13.3怎样找到要跟踪对象的 HSV 值? . . . . . . . . . . . . . . . . . 57 14几何变换 59 14.1扩展缩放 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 14.2平移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 14.3旋转 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 14.4仿射变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 14.5透视变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 15图像阈值 66 15.1简单阈值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 15.2自适应阈值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 15.3Otsu’s 二值化 . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 15.4Otsu’s 二值化是如何工作的? . . . . . . . . . . . . . . . . . . 72 3 www.linuxidc.com 16图像平滑 75 16.1平均 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 16.2高斯模糊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 16.3中值模糊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 16.4双边滤波 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 17形态学转换 81 17.1腐蚀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 17.2膨胀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 17.3开运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 17.4闭运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 17.5形态学梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 17.6礼帽 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 17.7黑帽 . . . . 21.2.4轮廓近似 . . . . . . . . . . . . . . . . . . . . . . . . . . 105 21.2.5凸包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 21.2.6凸性检测 . . . . . . . . . . . . . . . . . . . . . . . . . . 107 21.2.7边界矩形 . . . . . . . . . . . . . . . . . . . . . . . . . . 107 21.2.8最小外接圆 . . . . . . . . . . . . . . . . . . . . . . . . . 108 21.2.9椭圆拟合 . . . . . . . . . . . . . . . . . . . . . . . . . . 109 21.2.10直线拟合 . . . . . . . . . . . . . . . . . . . . . . . . . . 109 21.3轮廓的性质 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 21.3.1长宽比 . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 21.3.2Extent . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 21.3.3Solidity . . . . . . . . . . . . . . . . . . . . . . . . . . 111 21.3.4Equivalent Diameter . . . . . . . . . . . . . . . . . . 112 21.3.5方向 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 21.3.6掩模和像素点 . . . . . . . . . . . . . . . . . . . . . . . . 112 21.3.7最大值和最小值及它们的位置 . . . . . . . . . . . . . . . 113 21.3.8平均颜色及平均灰度 . . . . . . . . . . . . . . . . . . . . 113 21.3.9极点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 21.4轮廓:更多函数 . . . . . . . . . . . . . . . . . . . . . . . . . . 115 21.4.1凸缺陷 . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 21.4.2Point Polygon Test . . . . . . . . . . . . . . . . . . . . 116 21.4.3形状匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . 117 21.5轮廓的层次结构 . . . . . . . . . . . . . . . . . . . . . . . . . . 119 21.5.1什么是层次结构 . . . . . . . . . . . . . . . . . . . . . . 119 21.5.2OpenCV 中层次结构 . . . . . . . . . . . . . . . . . . . 120 21.5.3轮廓检索模式 . . . . . . . . . . . . . . . . . . . . . . . . 120 22直方图 124 22.1直方图的计算,绘制与分析 . . . . . . . . . . . . . . . . . . . . 124 22.1.1统计直方图 . . . . . . . . . . . . . . . . . . . . . . . . . 124 22.1.2绘制直方图 . . . . . . . . . . . . . . . . . . . . . . . . . 126 22.1.3使用掩模 . . . . . . . . . . . . . . . . . . . . . . . . . . 128 22.2直方图均衡化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 22.2.1OpenCV 中的直方图均衡化 . . . . . . . . . . . . . . . . 132 22.2.2CLAHE 有限对比适应性直方图均衡化 . . . . . . . . . . 132 22.32D 直方图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 22.3.1介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 22.3.2OpenCV 中的 2D 直方图 . . . . . . . . . . . . . . . . . 135 22.3.3Numpy 中 2D 直方图 . . . . . . . . . . . . . . . . . . . 136 22.3.4绘制 2D 直方图 . . . . . . . . . . . . . . . . . . . . . . 136 22.4直方图反向投影 . . . . . . . . . . . . . . . . . . . . . . . . . . 141 5 www.linuxidc.com 22.4.1Numpy 中的算法 . . . . . . . . . . . . . . . . . . . . . 141 22.4.2OpenCV 中的反向投影 . . . . . . . . . . . . . . . . . . 143 23图像变换 146 23.1傅里叶变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 23.1.1Numpy 中的傅里叶变换 . . . . . . . . . . . . . . . . . . 146 23.1.2OpenCV 中的傅里叶变换 . . . . . . . . . . . . . . . . . 148 23.1.3DFT 的性能优化 . . . . . . . . . . . . . . . . . . . . . . 150 23.1.4为什么拉普拉斯算子是高通滤波器? . . . . . . . . . . . 152 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 6 www.linuxidc.com 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 7 www.linuxidc.com 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 8 www.linuxidc.com 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