從零開始學OpenCV

《從零開始學OpenCV》是2022年化學工業出版社出版的書籍,作者是明日科技。

基本介紹

  • 中文名:從零開始學OpenCV 
  • 作者:明日科技
  • 出版時間:2022年6月1日
  • 出版社:化學工業出版社
  • 頁數:315 頁
  • ISBN:9787122405890
  • 開本:16 開
  • 裝幀:平裝
內容簡介,目錄,

內容簡介

本書從零基礎讀者的角度出發,通過通俗易懂的語言、豐富多彩的實例,循序漸進地讓讀者在實踐中學習Python OpenCV編程知識,並提升自己的實際開發能力。 全書共分為4篇16章,內容包括搭建開發環境、圖像處理基礎、NumPy模組、繪製圖形和文字、閾值、圖像運算、腐蝕與膨脹、圖像的幾何變換、濾波器、模板匹配、圖像輪廓、圖形檢測、視頻處理、人臉跟蹤與識別、MR機讀答題卡、MR智慧型視頻打卡系統等。書中知識點講解細緻,側重介紹每個知識點的使用場景,涉及的代碼給出了詳細的注釋,可以使讀者輕鬆領會OpenCV程式開發的精髓,快速提高開發技能。同時,本書配套了大量教學視頻,掃碼即可觀看,還提供所有程式源檔案,方便讀者實踐。 本書適合Python OpenCV、人工智慧、機器視覺初學者自學使用,也可用作高等院校相關專業的教材及參考書。

目錄

第1篇 基礎知識篇
第章 搭建開發環境 2 視頻講解:6節,26分鐘
1.1 OpenCV概述 3
1.1.1 OpenCV包含的模組 3
1.1.2 OpenCV的發展歷程 4
1.1.3 OpenCV的套用 4
1.1.4 Python與OpenCV 4
1.2 Python的下載和安裝 5
1.2.1 如何查看計算機作業系統的位數 5
1.2.2 下載Python安裝包 5
1.2.3 Windows 64位系統上安裝Python 7
1.2.4 測試Python是否安裝成功 9
1.3 Python OpenCV的下載和安裝 10
1.3.1 下載和安裝OpenCV-Contrib-Python庫 10
1.3.2 測試OpenCV-Contrib-Python庫和NumPy庫是否安裝成功 11
1.4 PyCharm的下載和安裝 11
1.4.1 下載PyCharm 11
1.4.2 安裝PyCharm 12
1.4.3 啟動並配置PyCharm 14
本章知識思維導圖 19
第2章 圖像處理基礎 20 視頻講解:13節,38分鐘
2.1 圖像處理的基本操作 21
2.1.1 讀取圖像 21
【實例2.1】 讀取當前項目目錄下的圖像 21
2.1.2 顯示圖像 22
【實例2.2】 視窗顯示圖像 23
2.1.3 保存圖像 24
【實例2.3】 保存圖像 24
2.1.4 獲取圖像屬性 25
【實例2.4】 列印彩色圖像和灰度圖像的屬性 25
2.2 像素 26
2.2.1 確定像素的位置 26
【實例2.5】 表示圖2.8中的指定像素 28
2.2.2 獲取像素的BGR值 28
2.2.3 修改像素的BGR值 30
【實例2.6】 修改圖2.7中的指定區域內的所有像素 30
2.3 色彩空間 31
2.3.1 GRAY色彩空間 31
【實例2.7】 從BGR色彩空間轉換到GRAY色彩空間 32
2.3.2 HSV色彩空間 33
【實例2.8】 從BGR色彩空間轉換到HSV色彩空間 34
2.4 通道 34
2.4.1 拆分通道 34
【實例2.9】 拆分一幅BGR圖像中的通道 35
【實例2.10】 拆分一幅HSV圖像中的通道 36
2.4.2 合併通道 38
【實例2.11】 按B→G→R的順序合併通道 38
【實例2.12】 合併H通道圖像、S通道圖像和V通道圖像 39
2.4.3 綜合運用拆分通道和合併通道 40
【實例2.13】 只把H通道的值調整為180 40
2.4.4 alpha通道 42
【實例2.14】 調整A通道的值 42
本章知識思維導圖 44
第3章 NumPy模組 45 視頻講解:5節,35分鐘
3.1 NumPy模組與OpenCV 46
3.2 數組的類型 46
3.3 創建數組 47
3.3.1 最常規的array()方法 47
【實例3.1】 創建一維數組和二維數組 48
【實例3.2】 創建浮點類型數組 48
【實例3.3】 創建三維數組 49
3.3.2 創建指定維度和數據類型未初始化的數組 49
【實例3.4】 創建2行3列的未初始化數組 49
3.3.3 創建用0填充的數組 49
【實例3.5】 創建純0數組 49
3.3.4 創建用1填充的數組 50
【實例3.6】 創建純1數組 50
3.3.5 創建隨機數組 50
【實例3.7】 創建隨機數組 50
3.4 運算元組 51
3.4.1 加法運算 51
【實例3.8】 對數組做加法運算 51
3.4.2 減法和乘除法運算 51
【實例3.9】 對數組做減法、乘法和除法運算 52
3.4.3 冪運算 52
【實例3.10】 兩個數組做冪運算 52
3.4.4 比較運算 53
【實例3.11】 使用邏輯運算符比較數組 53
3.4.5 複製數組 53
【實例3.12】 複製數據,比較複製的結果與原數組是否相同 53
【實例3.13】 複製圖像 54
3.5 數組的索引和切片 55
3.5.1 索引 55
【實例3.14】 查找一維數組索引為0的元素 55
3.5.2 切片式索引 55
【實例3.15】 獲取數組中某範圍內的元素 56
【實例3.16】 使用不同的切片式索引操作獲取數組中的元素 56
3.5.3 二維數組索引 57
【實例3.17】 用三種方式獲取二維數組中的元素 57
3.5.4 二維數組切片式索引 58
【實例3.18】 對二維數組進行切片式索引操作 58
3.6 創建圖像 59
3.6.1 創建黑白圖像 59
【實例3.19】 創建純黑色圖像 59
【實例3.20】 創建純白色圖像 59
【實例3.21】 在黑色圖像內部繪製白色矩形 60
【實例3.22】 創建黑白相間的圖像 60
3.6.2 創建彩色圖像 61
【實例3.23】 創建彩色圖像 61
3.6.3 創建隨機圖像 62
【實例3.24】 創建隨機像素的雪花點圖像 62
3.7 拼接圖像 63
3.7.1 水平拼接數組 63
3.7.2 垂直拼接數組 63
3.7.3 在圖像處理中的套用 64
【實例3.25】 按照水平和垂直兩種方式拼接兩個圖像 64
本章知識思維導圖 66
第4章 繪製圖形和文字 67 視頻講解:9節,23分鐘
4.1 線段的繪製 68
【實例4.1】 繪製線段並拼成一個“王”字 68
【實例4.2】 繪製99條長度、方向、寬度、顏色隨機的線段 69
4.2 矩形的繪製 71
【實例4.3】 繪製一個矩形框線 71
【實例4.4】 繪製正方形 72
4.3 圓形的繪製 73
【實例4.5】 繪製“交通燈” 74
【實例4.6】 繪製同心圓 74
【實例4.7】 繪製27個隨機實心圓 75
4.4 多邊形的繪製 76
【實例4.8】 繪製一個等腰梯形框線 77
【實例4.9】 繪製五角星 78
4.5 文字的繪製 79
【實例4.10】 繪製文字“OpenCV” 80
4.5.1 文字的斜體效果 81
【實例4.11】 繪製指定字型樣式的文字並呈現斜體效果 81
4.5.2 文字的垂直鏡像效果 82
【實例4.12】 繪製呈現垂直鏡像效果的“OpenCV” 82
4.5.3 在圖像上繪製文字 83
【實例4.13】 在圖像上繪製文字 83
4.6 動態繪製圖形 83
【實例4.14】 彈球動畫 84
本章知識思維導圖 86
第5章 閾值 88 視頻講解:10節,18分鐘
5.1 閾值概述 89
5.2 閾值處理函式 89
5.3 二值化處理 90
5.3.1 “非黑即白”的圖像 90
【實例5.1】 二值化閾值處理白黑漸變圖 90
【實例5.2】 觀察不同閾值的處理效果 91
【實例5.3】 觀察不同最大值的處理效果 92
5.3.2 反二值化處理 93
【實例5.4】 對圖像進行反二值化處理 93
5.4 零處理 94
5.4.1 低於閾值零處理 95
【實例5.5】 對圖像進行低於閾值零處理 95
5.4.2 超出閾值零處理 96
【實例5.6】 對圖像進行超出閾值零處理 96
5.5 截斷處理 97
【實例5.6】 對圖像進行截斷處理 97
5.6 自適應處理 99
【實例5.8】 無法得到清晰有效的結果 99
【實例5.9】 顯示自適應閾值處理的結果 101
5.7 Otsu方法 102
【實例5.10】 實現Otsu方法的閾值處理 103
5.8 閾值處理的套用 104
【實例5.11】 利用閾值處理勾勒樓房和汽車的輪廓 104
【實例5.12】 閾值調試器 106
本章知識思維導圖 107
第6章 圖像運算 108 視頻講解:9節,65分鐘
6.1 掩模 109
【實例6.1】 創建3通道掩模圖像 110
6.2 圖像的加法運算 111
【實例6.2】 分別使用“+”和add()方法計算圖像和 111
【實例6.3】 顯示圖像底片的效果 112
【實例6.4】 模擬三色光疊加得白光 113
【實例6.5】 利用掩模遮蓋相加結果 114
6.3 圖像的位運算 115
6.3.1 按位與運算 115
【實例6.6】 花圖像與十字掩模做與運算 116
6.3.2 按位或運算 117
【實例6.7】 花圖像與十字掩模做或運算 118
6.3.3 按位取反運算 119
【實例6.8】 對花圖像進行取反運算 119
6.3.4 按位異或運算 119
【實例6.9】 花圖像與十字掩模做異或運算 121
【實例6.10】 對圖像進行加密、解密 121
6.3.5 圖像的位運算的套用 123
【實例6.11】 貼上帶透明區域的圖像 123
6.4 合併圖像 124
6.4.1 加權和 125
【實例6.12】 利用計算加權和的方式實現多次曝光效果 125
【實例6.13】 為圖像添加水印效果 126
6.4.2 覆蓋 127
【實例6.14】 將小貓圖像貼到沙灘上 127
【實例6.15】 拼接禁止吸菸圖像 129
本章知識思維導圖 130
第7章 腐蝕與膨脹 131 視頻講解:7節,39分鐘
7.1 腐蝕 132
【實例7.1】 將仙人球圖像中的刺都抹除掉 133
7.2 膨脹 134
【實例7.2】 將圖像加工成“近視眼”效果 135
7.3 開運算 136
【實例7.3】 抹除黑種草圖像中的針狀葉子 136
7.4 閉運算 137
【實例7.4】 對漢字圖片進行閉運算 138
7.5 形態學方法 139
7.5.1 梯度運算 140
【實例7.5】 通過梯度運算畫出小蜘蛛的輪廓 140
7.5.2 頂帽運算 141
【實例7.6】 通過頂帽運算畫出小蜘蛛的腿 141
7.5.3 黑帽運算 142
【實例7.7】 通過黑帽運算畫出小蜘蛛身上的花紋 142
本章知識思維導圖 143
第8章 圖像的幾何變換 144 視頻講解:8節,41分鐘
8.1 縮放 145
8.1.1 dsize參數實現縮放 145
【實例8.1】 將圖像按照指定寬高進行縮放 145
8.1.2 fx參數和fy參數實現縮放 145
【實例8.2】 將圖像按照指定比例進行縮放 146
8.2 翻轉 148
【實例8.3】 同時實現三種翻轉效果 148
8.3 仿射變換 150
8.3.1 平移 151
【實例8.4】 讓圖像向右下方平移 151
8.3.2 旋轉 152
【實例8.5】 讓圖像逆時針旋轉 153
8.3.3 傾斜 154
【實例8.6】 讓圖像向右傾斜 154
8.4 透視 156
【實例8.7】 模擬從底部觀察圖像得到的透視效果 157
【實例8.8】 生成圖書封面俯視圖 159
8.5 cmath模組 160
【實例8.9】 呈現波浪效果的圖像 161
本章知識思維導圖 162
第9章 濾波器 163 視頻講解:6節,35分鐘
9.1 圖像平滑處理 164
9.2 均值濾波器 164
【實例9.1】 對花朵圖像進行均值濾波操作 165
9.3 中值濾波器 167
【實例9.2】 對花朵圖像進行中值濾波操作 167
9.4 高斯濾波器 168
【實例9.3】 對花朵圖像進行高斯濾波操作 170
9.5 雙邊濾波器 171
【實例9.4】 對一幅人臉圖像進行“磨皮” 172
9.6 拉普拉斯高通濾波器 173
【實例9.5】 銳化圖像 174
本章知識思維導圖 175
第10章 模板匹配 178 視頻講解:5節,13分鐘
10.1 模板匹配方法 179
10.2 單模板匹配 181
10.2.1 單目標匹配 181
【實例10.1】 為原始圖片中匹配成功的區域繪製紅框 181
【實例10.2】 從兩幅圖像中選擇最佳的匹配結果 183
【實例10.3】 查找重複的圖像 184
10.2.2 多目標匹配 185
【實例10.4】 為原始圖片中所有匹配成功的圖案繪製紅框 185
【實例10.5】 統計一條快軌線路的站台總數 187
【實例10.6】 優先選擇直線距離最短的捷運站 188
10.3 多模板匹配 190
【實例10.7】 同時匹配3個不同的模板 190
【實例10.8】 控制台輸出4輛車分別停在了哪個車位上 192
本章知識思維導圖 193
第11章 圖像輪廓 194 視頻講解:6節,37分鐘
11.1 圖像的輪廓 195
11.1.1 查找輪廓 195
【實例11.1】 獲取圖像輪廓的極點 196
【實例11.2】 獲取圖像輪廓的重心坐標 197
【實例11.3】 獲取圖像輪廓的周長 199
【實例11.4】 比較兩個圖像輪廓面積的大小 200
11.1.2 繪製輪廓 200
【實例11.5】 繪製幾何圖像的輪廓 201
【實例11.6】 繪製花朵的輪廓 203
11.2 輪廓擬合 204
11.2.1 矩形包圍框 204
【實例11.7】 為爆炸圖形繪製矩形包圍框 204
11.2.2 圓形包圍框 205
【實例11.8】 為爆炸圖形繪製圓形包圍框 205
11.2.3 最小三角包圍框 206
【實例11.9】 繪製最小三角包圍框 207
11.2.4 最優橢圓包圍框 207
【實例11.10】 繪製最優擬合橢圓包圍框 208
11.3 凸包 208
【實例11.11】 為爆炸圖形繪製凸包 209
本章知識思維導圖 210
第12章 圖形檢測 211 視頻講解:3節,25分鐘
12.1 Canny邊緣檢測 212
【實例12.1】 使用Canny算法檢測花朵邊緣 212
【實例12.2】 能否直接對包含噪聲的圖像進行Canny邊緣檢測 214
12.2 霍夫變換 215
12.2.1 直線檢測 215
【實例12.3】 檢測筆圖像中出現的直線 215
12.2.2 圓環檢測 216
【實例12.4】 檢測硬幣圖像中出現的圓環 217
本章知識思維導圖 218
第13章 視頻處理 219 視頻講解:16節,38分鐘
13.1 讀取並顯示攝像頭視頻 220
13.1.1 VideoCapture類 220
13.1.2 如何使用VideoCapture類 221
【實例13.1】 讀取並顯示攝像頭視頻 221
【實例13.2】 攝像頭視頻由彩色視頻轉換為灰度視頻 222
【實例13.3】 顯示並保存攝像頭視頻某一時刻的圖像 223
【實例13.4】 讀取並顯示兩個攝像頭視頻 224
13.2 播放視頻檔案 225
13.2.1 讀取並顯示視頻檔案 225
【實例13.5】 讀取並顯示視頻檔案 225
【實例13.6】 視頻檔案由彩色視頻轉換為灰度視頻 226
【實例13.7】 分解視頻 227
【實例13.8】 按照一定的幀數間隔保存幀 228
13.2.2 視頻的暫停播放和繼續播放 229
【實例13.9】 視頻的暫停播放和繼續播放 229
13.2.3 獲取視頻檔案的屬性 230
【實例13.10】 獲取並輸出視頻檔案的指定屬性值 231
【實例13.11】 動態顯示視頻檔案的屬性值 231
13.3 保存視頻檔案 232
13.3.1 VideoWriter類 233
13.3.2 如何使用VideoWriter類 234
【實例13.12】 保存一段攝像頭視頻 234
【實例13.13】 保存一段時長為10s的攝像頭視頻 235
【實例13.14】 保存視頻檔案 236
【實例13.15】 保存視頻檔案中的前10s視頻 238
本章知識思維導圖 239
第14章 人臉跟蹤與識別 240 視頻講解:10節,21分鐘
14.1 人臉跟蹤 241
14.1.1 級聯分類器 241
14.1.2 方法 242
14.1.3 分析人臉位置 243
【實例14.1】 在圖像的人臉位置繪製紅框 243
【實例14.2】 戴墨鏡特效 244
14.2 跟蹤其他內容 245
14.2.1 眼睛跟蹤 245
【實例14.3】 在圖像的眼睛位置繪製紅框 245
14.2.2 貓臉跟蹤 246
【實例14.4】 在圖像里找到貓臉的位置 246
14.2.3 行人跟蹤 247
【實例14.5】 在圖像里行人的位置 247
14.2.4 車牌跟蹤 248
【實例14.6】 標記圖像中車牌的位置 248
14.3 人臉識別 249
14.3.1 Eigenfaces人臉識別器 249
【實例14.7】 使用Eigenfaces識別人臉 250
14.3.2 Fisherfaces人臉識別器 252
【實例14.8】 使用Fisherfaces識別人臉 253
14.3.3 Local Binary Pattern Histogram人臉識別器 254
【實例14.9】 使用LBPH識別人臉 255
本章知識思維導圖 257
第15章 MR機讀答題卡 260 視頻講解:1節,13分鐘
15.1 開發背景 261
15.2 程式設計 261
15.2.1 開發環境 261
15.2.2 功能結構 261
15.2.3 業務流程 262
15.2.4 程式結構 262
15.3 模組設計 263
15.3.1 公共工具模組 263
15.3.2 獲取矩形圖案的平面透視圖 265
15.3.3 判斷填塗的是哪一個選項 267
15.3.4 判斷是哪一道題目 268
15.3.5 顯示機讀卡的平面透視圖 270
15.3.6 顯示對平面透視圖進行二值化閾值處理的結果 270
15.3.7 顯示對二值化閾值處理後的圖像進行閉運算後的結果 271
15.3.8 保存機讀卡上填塗的選項 272
15.3.9 列印在機讀卡上填塗的答案 272
本章知識思維導圖 273
第16章 MR智慧型視頻打卡系統 274 視頻講解:17節,84分鐘
16.1 需求分析 275
16.2 系統設計 276
16.2.1 開發環境 276
16.2.2 功能結構 276
16.2.3 業務流程 277
16.2.4 項目結構 280
16.3 檔案系統設計 280
16.4 數據實體模組設計 281
16.5 工具模組設計 283
16.5.1 公共工具模組 283
16.5.2 IO流工具模組 285
16.5.3 攝像頭工具模組 290
16.6 服務模組設計 292
16.6.1 人事服務模組 292
16.6.2 人臉識別服務模組 301
16.7 程式入口設計 303
16.7.1 用戶許可權管理 303
16.7.2 主選單設計 304
16.7.3 人臉打卡功能 306
16.7.4 為新員工登記人臉照片樣本 307
16.7.5 刪除舊員工全部數據 308
16.7.6 查詢員工打卡記錄 309
16.7.7 生成考勤報表 311
16.7.8 自定義上下班時間 313
16.7.9 啟動程式 315
本章知識思維導圖 315

相關詞條

熱門詞條

聯絡我們