OpenCV電腦視覺開發實踐:基於Python

朱文偉、李建英

  • OpenCV電腦視覺開發實踐:基於Python-preview-1
  • OpenCV電腦視覺開發實踐:基於Python-preview-2
  • OpenCV電腦視覺開發實踐:基於Python-preview-3
OpenCV電腦視覺開發實踐:基於Python-preview-1

相關主題

商品描述

"OpenCV是一個跨平臺電腦視覺和機器學習軟件庫,也是電腦視覺領域的開發人員必須掌握的技術。《OpenCV電腦視覺開發實踐:基於Python》基於Python 3.8全面系統地介紹OpenCV 4.10的使用,並配套示例源代碼、開發環境、PPT課件、配書PDF文件與作者答疑服務。 《OpenCV電腦視覺開發實踐:基於Python》共20章,主要內容包括電腦視覺概述、OpenCV的Python開發環境搭建、OpenCV基本操作、數組矩陣、圖像處理模塊、灰度變換和直方圖修正、圖像平滑、幾何變換、圖像邊緣檢測、圖像分割、圖像金字塔、圖像形態學、視頻處理,以及停車場車牌識別、目標檢測、數字水印、圖像加密和解密、物體計數、圖像輪廓和手勢識別等案例。 《OpenCV電腦視覺開發實踐:基於Python》既適合OpenCV初學者、電腦視覺與圖像處理應用開發人員、人工智能算法開發人員閱讀,也適合作為高等院校或高職高專院校電腦視覺與圖像處理、人工智能等相關專業的教學參考書。"

目錄大綱

目    錄

第 1 章  電腦視覺概述 1

1.1  圖像的基本概念 1

1.1.1  圖像和圖形 1

1.1.2  數字圖像及其特點 2

1.1.3  圖像單位 2

1.1.4  圖像分辨率與屏幕分辨率 3

1.1.5  圖像的灰度與灰度級 3

1.1.6  圖像的深度 4

1.1.7  二值圖像、灰度圖像與彩色圖像 4

1.1.8  通道 5

1.1.9  圖像存儲 5

1.2  圖像噪聲 5

1.2.1  圖像噪聲的定義 5

1.2.2  圖像噪聲的來源 6

1.2.3  圖像噪聲的濾除 6

1.3  圖像處理 7

1.3.1  圖像處理的分類 7

1.3.2  數字圖像處理 8

1.3.3  數字圖像處理常用方法 9

1.3.4  圖像處理的應用 11

1.4  電腦視覺概述 12

1.4.1  基本概念 12

1.4.2  電腦視覺的應用 13

1.4.3  與相關學科的區別 14

1.5  OpenCV概述 15

第 2 章  OpenCV的Python開發環境搭建 18

2.1  Python下載與安裝 18

2.2  在線安裝與卸載opencv-python 20

2.2.1  在線安裝opencv-python 20

2.2.2  卸載opencv-python 24

2.3  離線安裝opencv-python 24

2.3.1  下載離線版opencv-python 25

2.3.2  離線安裝NumPy和Matplotlib庫 25

2.3.3  離線安裝opencv-python 25

2.4  使用集成開發環境PyCharm 26

2.4.1  PyCharm的下載和安裝 26

2.4.2  瞭解PyCharm的虛擬環境 32

2.4.3  在PyCharm下開發OpenCV程序 34

2.4.4  調試Python程序 35

2.5  測試一下NumPy的數學函數 36

第 3 章  OpenCV基本操作 37

3.1  OpenCV架構 37

3.2  圖像輸入/輸出模塊imgcodecs 39

3.2.1  讀取圖像文件 39

3.2.2  得到讀取的圖片的高度和寬度 42

3.2.3  imwrite保存圖片 42

3.3  OpenCV界面編程 44

3.4  單窗口顯示多圖片 45

3.5  銷毀窗口 47

3.6  調整窗口大小 48

3.7  鼠標事件 49

3.8  鍵盤事件 52

3.9  滑動條事件 53

第 4 章  數組矩陣 56

4.1  NumPy概述 56

4.2  ndarray對象 57

4.3  NumPy的數據類型 59

4.4  數組屬性 61

4.5  新建數組 63

4.6  通過已有的數組創建數組 65

4.7  通過數值範圍創建數組 66

4.8  切片和索引 67

4.9  高級索引 69

4.9.1  整數數組索引 69

4.9.2  布爾索引 70

4.9.3  花式索引 71

4.10  迭代數組 72

4.10.1  迭代器對象nditer 72

4.10.2  控制遍歷順序 73

4.10.3  修改數組中元素的值 73

4.10.4  使用外部循環 74

4.10.5  廣播迭代 74

4.11  數組操作 75

4.11.1  修改數組形狀 75

4.11.2  翻轉數組 77

第 5 章  圖像處理模塊 81

5.1  顏色變換cvtColor 81

5.2  畫基本圖形 82

5.2.1  畫點 82

5.2.2  畫矩形 83

5.2.3  畫圓 83

5.2.4  畫橢圓 84

5.2.5  畫線段 86

5.2.6  畫多邊形 86

5.2.7  填充多邊形 87

5.3  文字繪制 89

5.4  為圖像添加邊框 91

5.5  在圖像中查找輪廓 93

第 6 章  灰度變換和直方圖修正 95

6.1  點運算 95

6.1.1  點運算的基本概念 95

6.1.2  點運算的目標與分類 96

6.1.3  點運算的特點和應用 96

6.2  灰度變換 97

6.2.1  灰度變換的基本概念 97

6.2.2  灰度變換的作用 97

6.2.3  灰度變換的方法 98

6.2.4  灰度化 98

6.2.5  對比度 101

6.2.6  灰度的線性變換 102

6.2.7  分段線性變換 104

6.2.8  對數變換和反對數變換 106

6.2.9  冪律變換 107

6.3  直方圖修正 109

6.3.1  直方圖的概念 109

6.3.2  直方圖均衡化 112

第 7 章  圖像平滑 117

7.1  圖像平滑基礎 117

7.2  線性濾波 119

7.2.1  歸一化方框濾波器 119

7.2.2  高斯濾波器 120

7.3  非線性濾波 124

7.3.1  中值濾波 124

7.3.2  雙邊濾波 125

第 8 章  幾何變換 127

8.1  幾何變換基礎 127

8.2  圖像平移 130

8.3  圖像旋轉 131

8.4  仿射變換 134

8.5  圖像縮放 136

8.5.1  縮放原理 136

8.5.2  OpenCV中的縮放 137

第 9 章  圖像邊緣檢測 139

9.1  概述 139

9.2  邊緣檢測研究的歷史現狀 141

9.3  邊緣定義及類型分析 142

9.4  梯度的概念 144

9.5  圖像邊緣檢測的應用 144

9.6  目前邊緣檢測存在的問題 146

9.7  邊緣檢測的基本思想 147

9.8  圖像邊緣檢測的步驟 147

9.9  經典圖像邊緣檢測算法 149

9.9.1  Roberts算子 150

9.9.2  Sobel算子邊緣檢測 151

9.9.3  Prewitt算子邊緣檢測 153

9.9.4  LoG邊緣檢測算子 155

9.9.5  邊緣檢測的最新技術與方法 158

第 10 章  圖像分割 161

10.1  圖像分割概述 161

10.2  圖像分割技術現狀 162

10.3  圖像分割的應用 163

10.4  圖像分割的數學定義 164

10.5  圖像分割方法的分類 165

10.5.1  基於閾值化的分割方法 165

10.5.2  基於邊緣的分割方法 166

10.5.3  基於區域的分割方法 167

10.5.4  基於神經網絡的分割方法 169

10.5.5  基於聚類的分割方法 169

10.6  使用OpenCV進行圖像分割 170

10.7  彩色圖像分割 175

10.8  grabCut算法分割圖像 177

10.8.1  基本概念 177

10.8.2  grabCut函數 179

10.9  floodFill漫水填充分割 183

10.9.1  基本概念 183

10.9.2  floodFill函數 183

10.10  分水嶺分割法 185

10.10.1  基本概念 186

10.10.2  距離變換函數distanceTransform 189

10.10.3  區域標記函數connectedComponents 191

10.10.4  分水嶺函數wathershed 192

第 11 章  圖像金字塔 195

11.1  基本概念 195

11.2  高斯金字塔 196

11.2.1  向下採樣 197

11.2.2  向上採樣 198

11.3  拉普拉斯金字塔 200

第 12 章  圖像形態學 202

12.1  圖像形態學基本概念 202

12.2  形態學的應用 202

12.3  數學上的形態學 203

12.3.1  拓撲學 203

12.3.2  數學形態學的組成與操作分類 204

12.3.3  數學形態學的應用 204

12.4  結構元素 205

12.5  膨脹 205

12.6  腐蝕 207

12.7  開運算 209

12.8  閉運算 210

12.9  實現腐蝕和膨脹 211

12.10  實現開閉運算和頂帽/黑帽 215

12.11  用形態學運算檢測邊緣 219

12.12  擊中擊不中 220

12.13  利用形態學運算提取水平線和垂直線 223

第 13 章  視頻處理 225

13.1  OpenCV視頻處理架構 225

13.2  捕獲視頻類VideoCapture 226

13.2.1  構造VideoCapture對象 226

13.2.2  判斷打開視頻是否成功 227

13.2.3  讀取視頻幀 227

13.2.4  播放視頻文件 228

13.2.5  獲取和設置視頻屬性 230

13.2.6  播放攝像頭視頻 232

第 14 章  停車場車牌識別案例實戰 235

14.1  需求分析 235

14.2  技術可行性分析 236

14.2.1  國外技術分析 236

14.2.2  國內技術分析 238

14.2.3  車牌識別技術的難點 239

14.2.4  車牌識別系統概述 239

14.3  車牌定位技術 240

14.3.1  車牌特徵概述 240

14.3.2  車牌定位方法 241

14.3.3  車牌圖像預處理 245

14.3.4  車牌圖像的灰度化 245

14.3.5  車牌圖像的直方圖均衡化 247

14.3.6  車牌圖像的濾波 248

14.3.7  車牌圖像的二值化 249

14.3.8  車牌圖像的邊緣檢測 249

14.3.9  車牌圖像的灰度映射 250

14.3.10  車牌圖像的改進型投影法定位 250

14.4  車牌字符分割技術 252

14.4.1  常用車牌字符分割算法 252

14.4.2  車牌傾斜問題 254

14.4.3  車牌傾斜度檢測方法 254

14.4.4  車牌傾斜的校正方法 255

14.4.5  車牌邊框和鉚釘的去除 255

14.4.6  車牌字符分割 255

14.4.7  基於垂直投影和先驗知識的車牌字符分割 256

14.4.8  粘連車牌字符的分割 257

14.4.9  斷裂車牌字符的合並 257

14.4.10  對車牌字符的切分結果進行確認 258

14.5  車牌字符識別技術 259

14.5.1  模式識別 259

14.5.2  字符識別 260

14.5.3  漢字識別 270

第 15 章  OpenCV目標檢測 286

15.1  目標檢測概述 286

15.2  目標檢測的基本概念 288

15.3  視頻序列圖像預處理 290

15.4  基於深度學習的運動目標檢測 291

15.4.1  YOLO運動目標檢測算法 292

15.4.2  YOLOv2概述 296

15.4.3  YOLOv3概述 297

15.4.4  實戰YOLOv3識別物體 299

15.4.5  SSD運動目標檢測算法 309

15.4.6  實戰SSD 312

15.4.7  實戰人臉檢測 314

第 16 章  數字水印 319

16.1  基本概念 319

16.1.1  數字水印的概念 319

16.1.2  數字水印的特點 320

16.2  數字水印原理 320

16.2.1  嵌入過程 321

16.2.2  提取過程 321

16.3  相關函數 321

16.3.1  cv2.bitwise_and函數 322

16.3.2  cv2.bitwise_or函數 323

16.4  代碼實現數字水印 324

第 17 章  圖像加密和解密 326

17.1  圖像加密和解密原理 326

17.2  相關函數 327

17.3  代碼實現圖像加解密 328

第 18 章  物體計數 330

18.1  基本原理 330

18.2  相關函數 330

18.3  代碼實現藥片計數 332

第 19 章  圖像輪廓 335

19.1  基本概念 335

19.2  應用場景 336

19.3  OpenCV中的輪廓函數 336

19.3.1  查找輪廓findContours 336

19.3.2  輪廓的基本屬性 337

19.3.3  繪制輪廓drawContours 338

19.3.4  求輪廓面積contourArea 338

19.4  實戰輪廓函數 339

19.5  實戰黑白翻轉 341

第 20 章  手勢識別 343

20.1  概述 343

20.2  NumPy中的ndarray 343

20.2.1  NumPy是什麽 344

20.2.2  ndarray的概念 344

20.2.3  ndarray的特點 345

20.2.4  NumPy數組的優勢 345

20.2.5  內存中的ndarray對象 345

20.2.6  ndarray數組對象的創建 346

20.2.7  ndarray的重要屬性 351

20.2.8  數組的軸和軸的長度 352

20.3  凸包和凸包檢測 355

20.4  凸缺陷及其應用 360

20.4.1  查找凸包和凸缺陷的示例 361

20.4.2  凸缺陷的應用 363

20.5  手勢識別原理 364

20.6  區分手勢0和手勢1 365

20.7  區分手勢1到手勢5 367