OpenCV 4詳解:基於Python (原始碼)

OpenCV 4詳解:基於Python (原始碼)

OpenCV 4詳解:基於Python (原始碼)


資料來源: https://github.com/fengzhenHIT/learnOpenCV4_Python


GITHUB: https://github.com/jash-git/Jash-good-idea-20210816-001/tree/main/OpenCV%204%E8%A9%B3%E8%A7%A3%EF%BC%9A%E5%9F%BA%E6%96%BCPython%20%E5%8E%9F%E5%A7%8B%E7%A2%BC

目  錄

第 1章 初識OpenCV 1

1.1 什麼是OpenCV 1

1.1.1 OpenCV與電腦視覺 1

1.1.2 OpenCV的發展 2

1.1.3 OpenCV 4帶來了什麼 3

1.2 安裝OpenCV-Python 4

1.2.1 在Windows系統中安裝

OpenCV-Python 4

1.2.2 在Ubuntu系統中安裝

OpenCV-Python 9

1.3 OpenCV的模組架構 12

1.4 示例程式 14

1.4.1 配置運行環境 14

1.4.2 邊緣檢測 14

1.4.3 K聚類演算法 15

1.4.4 基於特徵點的圖像匹配 16

1.4.5 行人檢測 17

1.4.6 手寫數位識別 18

1.5 本章小結 19

第 2章 載入、顯示與保存資料 20

2.1 圖像的表示 20

2.1.1 圖像基礎 20

2.1.2 NumPy相關介紹 22

2.2 圖片的讀取與顯示 27

2.2.1 圖片讀取函數 28

2.2.2 圖像視窗函數 29

2.2.3 圖片顯示函數 29

2.3 視頻載入與攝像頭調用 30

2.3.1 讀取視頻資料 30

2.3.2 攝像頭的直接調用 33

2.4 資料保存 33

2.4.1 保存圖像 34

2.4.2 保存視頻 36

2.4.3 保存和讀取XML和YMAL

文件 38

2.5 本章小結 41

第3章 圖像基本操作 42

3.1 顏色空間 42

3.1.1 顏色空間與轉換 42

3.1.2 多通道分離與合併 47

3.2 關於圖元的操作 49

3.2.1 圖像圖元統計 50

3.2.2 兩圖像間的圖元操作 53

3.2.3 圖像二值化 58

3.2.4 LUT 62

3.3 圖像連接和圖像變換 64

3.3.1 圖像連接 64

3.3.2 圖像尺寸變換 66

3.3.3 圖像翻轉變換 68

3.3.4 圖像仿射變換 69

3.3.5 圖像透視變換 72

3.3.6 極座標變換 75

3.4 在圖像上繪製幾何圖形和生成文字 77

3.4.1 繪製圓形 77

3.4.2 繪製直線 78

3.4.3 繪製橢圓 78

3.4.4 繪製多邊形 79

3.4.5 生成文字 80

3.5 感興趣區域 83

3.6 圖像金字塔 85

3.6.1 高斯金字塔 85

3.6.2 拉普拉斯金字塔 86

3.7 窗口交交互操作 88

3.7.1 圖像視窗滑動條 88

3.7.2 滑鼠回應 90

3.8 本章小結 92

第4章 圖像長條圖 94

4.1 圖像長條圖的計算與繪製 94

4.1.1 圖像長條圖的計算 94

4.1.2 圖像長條圖的繪製 96

4.2 2D長條圖 100

4.3 關於長條圖的操作 103

4.3.1 長條圖歸一化 103

4.3.2 長條圖比較 106

4.3.3 長條圖均衡化 109

4.3.4 長條圖匹配 111

4.3.5 長條圖反向投影 114

4.4 圖像範本匹配 115

4.5 本章小結 119

第5章 圖像濾波 120

5.1 圖像卷積 120

5.2 雜訊的種類與生成 124

5.2.1 椒鹽雜訊 124

5.2.2 高斯雜訊 126

5.3 線性濾波 129

5.3.1 均值濾波 129

5.3.2 方框濾波 132

5.3.3 高斯濾波 134

5.3.4 可分離濾波 137

5.3.5 中值濾波 140

5.3.6 雙邊濾波 142

5.4 圖像邊緣檢測 145

5.4.1 邊緣檢測原理 145

5.4.2 Sobel運算元 148

5.4.3 Scharr運算元 151

5.4.4 生成邊緣檢測濾波器 152

5.4.5 Laplacian運算元 154

5.4.6 Canny演算法 156

5.5 本章小結 158

第6章 圖像形態學操作 159

6.1 圖元距離與連通域 159

6.1.1 圖像距離變換 159

6.1.2 圖像連通域分析 164

6.2 腐蝕與膨脹 170

6.2.1 圖像腐蝕 170

6.2.2 圖像膨脹 175

6.3 形態學應用 178

6.3.1 開運算 178

6.3.2 閉運算 180

6.3.3 形態學梯度 180

6.3.4 頂帽運算 181

6.3.5 黑帽運算 181

6.3.6 擊中擊不中變換 182

6.3.7 圖像細化 185

6.4 本章小結 187

第7章 目標檢測 189

7.1 形狀檢測 189

7.1.1 直線檢測 189

7.1.2 直線擬合 198

7.1.3 圓形檢測 200

7.2 輪廓檢測 202

7.2.1 輪廓發現與繪製 203

7.2.2 輪廓面積 207

7.2.3 輪廓長度 208

7.2.4 輪廓外接多邊形 209

7.2.5 點到輪廓距離 213

7.2.6 凸包檢測 215

7.3 矩的計算 216

7.3.1 幾何矩與中心矩 217

7.3.2 Hu矩 218

7.3.3 基於Hu矩的輪廓匹配 220

7.4 點集擬合 222

7.5 二維碼檢測 224

7.6 本章小結 226

第8章 圖像分析與修復 228

8.1 傅裡葉變換 228

8.1.1 離散傅裡葉變換 228

8.1.2 通過傅裡葉變換計算卷積 235

8.1.3 離散余弦變換 236

8.2 積分圖 240

8.3 圖像分割 243

8.3.1 漫水填充法 244

8.3.2 分水嶺法 246

8.3.3 Grabcut圖像分割 249

8.3.4 Mean-Shift分割演算法 251

8.4 圖像修復 254

8.5 本章小結 256

第9章 特徵點檢測與匹配 258

9.1 角點檢測 258

9.1.1 顯示關鍵點 258

9.1.2 Harris角點檢測 261

9.1.3 Shi-Tomasi角點檢測 264

9.1.4 亞圖元級別角點檢測 266

9.2 特徵點檢測 268

9.2.1 關鍵點 268

9.2.2 描述子 269

9.2.3 SIFT特徵點檢測 270

9.2.4 SURF特徵點檢測 273

9.2.5 ORB特徵點檢測 276

9.3 特徵點匹配 279

9.3.1 DescriptorMatcher類 279

9.3.2 暴力匹配 281

9.3.3 顯示特徵點匹配結果 282

9.3.4 FLANN匹配 284

9.3.5 RANSAC優化特徵點匹配 287

9.4 本章小結 290

第 10章 立體視覺 291 [測距]

10.1 單目視覺 291

10.1.1 單目相機模型 291

10.1.2 標定板角點提取 294

10.1.3 單目相機標定 298

10.1.4 單目相機校正 302

10.1.5 單目投影 305

10.1.6 單目位姿估計 307

10.2 雙目視覺 312

10.2.1 雙目相機模型 312

10.2.2 雙目相機標定 313

10.2.3 雙目相機校正 316

10.3 本章小結 319

第 11章 視頻分析 321

11.1 差值法檢測移動物體 321

11.2 均值遷移法目標跟蹤 323

11.2.1 均值遷移的目標跟蹤 324

11.2.2 自我調整均值遷移的目標跟蹤 327

11.3 光流法目標跟蹤 330

11.3.1 Faeneback多項式擴展演算法 332

11.3.2 基於LK光流跟蹤 335

11.4 本章小結 338

第 12章 OpenCV與機器學習 339

12.1 OpenCV與傳統機器學習 339

12.1.1 k均值聚類演算法 339

12.1.2 K近鄰演算法 343

12.1.3 決策樹 347

12.1.4 隨機森林 349

12.1.5 支持向量機 351

12.2 OpenCV與深度神經網路應用

實例 354

12.2.1 載入深度學習模型 355

12.2.2 圖像識別 357

12.2.3 快速風格遷移 359

12.2.4 性別檢測 361

12.3 本章小結 363

——-

目  录

第 1章 初识OpenCV 1

1.1 什么是OpenCV 1

1.1.1 OpenCV与计算机视觉 1

1.1.2 OpenCV的发展 2

1.1.3 OpenCV 4带来了什么 3

1.2 安装OpenCV-Python 4

1.2.1 在Windows系统中安装

OpenCV-Python 4

1.2.2 在Ubuntu系统中安装

OpenCV-Python 9

1.3 OpenCV的模块架构 12

1.4 示例程序 14

1.4.1 配置运行环境 14

1.4.2 边缘检测 14

1.4.3 K聚类算法 15

1.4.4 基于特征点的图像匹配 16

1.4.5 行人检测 17

1.4.6 手写数字识别 18

1.5 本章小结 19

第 2章 载入、显示与保存数据 20

2.1 图像的表示 20

2.1.1 图像基础 20

2.1.2 NumPy相关介绍 22

2.2 图片的读取与显示 27

2.2.1 图片读取函数 28

2.2.2 图像窗口函数 29

2.2.3 图片显示函数 29

2.3 视频加载与摄像头调用 30

2.3.1 读取视频数据 30

2.3.2 摄像头的直接调用 33

2.4 数据保存 33

2.4.1 保存图像 34

2.4.2 保存视频 36

2.4.3 保存和读取XML和YMAL

文件 38

2.5 本章小结 41

第3章 图像基本操作 42

3.1 颜色空间 42

3.1.1 颜色空间与转换 42

3.1.2 多通道分离与合并 47

3.2 关于像素的操作 49

3.2.1 图像像素统计 50

3.2.2 两图像间的像素操作 53

3.2.3 图像二值化 58

3.2.4 LUT 62

3.3 图像连接和图像变换 64

3.3.1 图像连接 64

3.3.2 图像尺寸变换 66

3.3.3 图像翻转变换 68

3.3.4 图像仿射变换 69

3.3.5 图像透视变换 72

3.3.6 极坐标变换 75

3.4 在图像上绘制几何图形和生成文字 77

3.4.1 绘制圆形 77

3.4.2 绘制直线 78

3.4.3 绘制椭圆 78

3.4.4 绘制多边形 79

3.4.5 生成文字 80

3.5 感兴趣区域 83

3.6 图像金字塔 85

3.6.1 高斯金字塔 85

3.6.2 拉普拉斯金字塔 86

3.7 窗口交互操作 88

3.7.1 图像窗口滑动条 88

3.7.2 鼠标响应 90

3.8 本章小结 92

第4章 图像直方图 94

4.1 图像直方图的计算与绘制 94

4.1.1 图像直方图的计算 94

4.1.2 图像直方图的绘制 96

4.2 2D直方图 100

4.3 关于直方图的操作 103

4.3.1 直方图归一化 103

4.3.2 直方图比较 106

4.3.3 直方图均衡化 109

4.3.4 直方图匹配 111

4.3.5 直方图反向投影 114

4.4 图像模板匹配 115

4.5 本章小结 119

第5章 图像滤波 120

5.1 图像卷积 120

5.2 噪声的种类与生成 124

5.2.1 椒盐噪声 124

5.2.2 高斯噪声 126

5.3 线性滤波 129

5.3.1 均值滤波 129

5.3.2 方框滤波 132

5.3.3 高斯滤波 134

5.3.4 可分离滤波 137

5.3.5 中值滤波 140

5.3.6 双边滤波 142

5.4 图像边缘检测 145

5.4.1 边缘检测原理 145

5.4.2 Sobel算子 148

5.4.3 Scharr算子 151

5.4.4 生成边缘检测滤波器 152

5.4.5 Laplacian算子 154

5.4.6 Canny算法 156

5.5 本章小结 158

第6章 图像形态学操作 159

6.1 像素距离与连通域 159

6.1.1 图像距离变换 159

6.1.2 图像连通域分析 164

6.2 腐蚀与膨胀 170

6.2.1 图像腐蚀 170

6.2.2 图像膨胀 175

6.3 形态学应用 178

6.3.1 开运算 178

6.3.2 闭运算 180

6.3.3 形态学梯度 180

6.3.4 顶帽运算 181

6.3.5 黑帽运算 181

6.3.6 击中击不中变换 182

6.3.7 图像细化 185

6.4 本章小结 187

第7章 目标检测 189

7.1 形状检测 189

7.1.1 直线检测 189

7.1.2 直线拟合 198

7.1.3 圆形检测 200

7.2 轮廓检测 202

7.2.1 轮廓发现与绘制 203

7.2.2 轮廓面积 207

7.2.3 轮廓长度 208

7.2.4 轮廓外接多边形 209

7.2.5 点到轮廓距离 213

7.2.6 凸包检测 215

7.3 矩的计算 216

7.3.1 几何矩与中心矩 217

7.3.2 Hu矩 218

7.3.3 基于Hu矩的轮廓匹配 220

7.4 点集拟合 222

7.5 二维码检测 224

7.6 本章小结 226

第8章 图像分析与修复 228

8.1 傅里叶变换 228

8.1.1 离散傅里叶变换 228

8.1.2 通过傅里叶变换计算卷积 235

8.1.3 离散余弦变换 236

8.2 积分图 240

8.3 图像分割 243

8.3.1 漫水填充法 244

8.3.2 分水岭法 246

8.3.3 Grabcut图像分割 249

8.3.4 Mean-Shift分割算法 251

8.4 图像修复 254

8.5 本章小结 256

第9章 特征点检测与匹配 258

9.1 角点检测 258

9.1.1 显示关键点 258

9.1.2 Harris角点检测 261

9.1.3 Shi-Tomasi角点检测 264

9.1.4 亚像素级别角点检测 266

9.2 特征点检测 268

9.2.1 关键点 268

9.2.2 描述子 269

9.2.3 SIFT特征点检测 270

9.2.4 SURF特征点检测 273

9.2.5 ORB特征点检测 276

9.3 特征点匹配 279

9.3.1 DescriptorMatcher类 279

9.3.2 暴力匹配 281

9.3.3 显示特征点匹配结果 282

9.3.4 FLANN匹配 284

9.3.5 RANSAC优化特征点匹配 287

9.4 本章小结 290

第 10章 立体视觉 291

10.1 单目视觉 291

10.1.1 单目相机模型 291

10.1.2 标定板角点提取 294

10.1.3 单目相机标定 298

10.1.4 单目相机校正 302

10.1.5 单目投影 305

10.1.6 单目位姿估计 307

10.2 双目视觉 312

10.2.1 双目相机模型 312

10.2.2 双目相机标定 313

10.2.3 双目相机校正 316

10.3 本章小结 319

第 11章 视频分析 321

11.1 差值法检测移动物体 321

11.2 均值迁移法目标跟踪 323

11.2.1 均值迁移的目标跟踪 324

11.2.2 自适应均值迁移的目标跟踪 327

11.3 光流法目标跟踪 330

11.3.1 Faeneback多项式扩展算法 332

11.3.2 基于LK光流跟踪 335

11.4 本章小结 338

第 12章 OpenCV与机器学习 339

12.1 OpenCV与传统机器学习 339

12.1.1 k均值聚类算法 339

12.1.2 K近邻算法 343

12.1.3 决策树 347

12.1.4 随机森林 349

12.1.5 支持向量机 351

12.2 OpenCV与深度神经网络应用

实例 354

12.2.1 加载深度学习模型 355

12.2.2 图像识别 357

12.2.3 快速风格迁移 359

12.2.4 性别检测 361

12.3 本章小结 363

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *