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

朱文偉 李建英

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

買這商品的人也買了...

商品描述

OpenCV是一個跨平臺電腦視覺和機器學習軟件庫,也是電腦視覺領域的開發人員必須掌握的技術。本書基於Python 3.8全面、系統地介紹OpenCV 4.5的使用,並配套示例源代碼、開發環境與答疑服務。 本書共分15章,主要內容包括電腦視覺概述、OpenCV的Python開發環境搭建、OpenCV基本操作、數組矩陣、圖像處理模塊、灰度變換和直方圖修正、圖像平滑、幾何變換、圖像邊緣檢測、圖像分割、圖像金字塔、圖像形態學、視頻處理,以及停車場車牌識別、物體識別、運動跟蹤、人臉檢測等案例。 本書既適合電腦視覺與圖像處理、人工智能算法的開發人員閱讀,也適合高等院校和培訓機構電腦視覺與圖像處理、人工智能等相關專業的師生教學參考。

目錄大綱

目    錄

第1章  電腦視覺概述 1

1.1  圖像的基本概念 1

1.1.1  圖像和圖形 1

1.1.2  數字圖像及其特點 1

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  圖像處理的應用 12

1.5  電腦視覺概述 12

1.5.1  基本概念 12

1.5.2  電腦視覺的應用 14

1.5.3  與相關學科的區別 15

1.6  OpenCV概述 15

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

2.1  Python 3.8下載與安裝 17

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

2.2.1  在線安裝opencv-python 18

2.2.2  卸載opencv-python 22

2.3  PyCharm 2021.2下載與安裝 23

2.3.1  PyCharm的下載和安裝 23

2.3.2  配置PyCharm開發OpenCV程序 24

2.3.3  導入配套源碼的方法 27

2.3.4  調試Python程序 27

2.4  測試一下NumPy的數學函數 28

第3章  OpenCV基本操作 29

3.1  OpenCV架構 29

3.2  圖像輸入輸出模塊imgcodecs 31

3.2.1  讀取圖像文件 31

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

3.2.3  imwrite保存圖片 34

3.3  OpenCV界面編程 35

3.4  單窗口顯示多圖片 37

3.5  銷毀窗口 39

3.6  鼠標事件 40

3.7  鍵盤事件 44

3.8  滑動條事件 45

第4章  數組矩陣 47

4.1  NumPy概述 47

4.2  ndarray對象 48

4.3  NumPy的數據類型 49

4.4  數組屬性 52

4.5  新建數組 54

4.6  從已有的數組創建數組 55

4.7  從數值範圍創建數組 57

4.8  切片和索引 58

4.9  高級索引 60

4.9.1  整數數組索引 60

4.9.2  布爾索引 61

4.9.3  花式索引 61

4.10  迭代數組 62

4.10.1  迭代器對象nditer 62

4.10.2  控制遍歷順序 63

4.10.3  修改數組中元素的值 64

4.10.4  使用外部循環 64

4.10.5  廣播迭代 65

4.11  數組操作 66

4.11.1  修改數組形狀 66

4.11.2  翻轉數組 68

第5章  圖像處理模塊 72

5.1  顏色變換cvtColor 72

5.2  畫基本圖形 73

5.2.1  畫點 73

5.2.2  畫矩形 74

5.2.3  畫圓 74

5.2.4  畫橢圓 75

5.2.5  畫線段 77

5.2.6  畫多邊形 77

5.2.7  填充多邊形 78

5.3  文字繪制 80

5.4  為圖像添加邊框 82

5.5  在圖像中查找輪廓 84

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

6.1  點運算 86

6.1.1  點運算的基本概念 86

6.1.2  點運算的目標與分類 86

6.1.3  點運算的特點和應用 87

6.2  灰度變換 88

6.2.1  灰度變換的基本概念 88

6.2.2  灰度變換的作用 88

6.2.3  灰度變換的方法 89

6.2.4  灰度化 89

6.2.5  對比度 93

6.2.6  灰度的線性變換 93

6.2.7  分段線性變換 95

6.2.8  對數變換和反對數變換 97

6.2.9  冪律變換 99

6.3  直方圖修正 101

6.3.1  直方圖的概念 101

6.3.2  直方圖均衡化 104

第7章  圖像平滑 108

7.1  圖像平滑基礎 108

7.2  線性濾波 110

7.2.1  歸一化方框濾波器 110

7.2.2  高斯濾波器 111

7.3  非線性濾波 116

7.3.1  中值濾波 116

7.3.2  雙邊濾波 116

第8章  幾何變換 118

8.1  幾何變換基礎 118

8.2  圖像平移 121

8.3  圖像旋轉 122

8.4  仿射變換 125

8.5  圖像縮放 127

8.5.1  縮放原理 127

8.5.2  OpenCV中的縮放 128

第9章  圖像邊緣檢測 130

9.1  概述 130

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

9.3  邊緣定義及類型分析 134

9.4  梯度的概念 135

9.5  圖像邊緣檢測的應用 135

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

9.7  邊緣檢測的基本思想 138

9.8  圖像邊緣檢測的步驟 139

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

9.9.1  Roberts算子 141

9.9.2  Sobel算子邊緣檢測 143

9.9.3  Prewitt算子邊緣檢測 145

9.9.4  LoG邊緣檢測算子 147

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

第10章  圖像分割 153

10.1  圖像分割概述 153

10.2  圖像分割技術現狀 154

10.3  圖像分割的應用 155

10.4  圖像分割的數學定義 156

10.5  圖像分割方法的分類 157

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

10.5.2  基於邊緣的分割方法 159

10.5.3  基於區域的分割方法 159

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

10.5.5  基於聚類的分割方法 162

10.6  使用OpenCV進行圖像分割 163

10.7  彩色圖像分割 168

10.8  grabCut算法分割圖像 170

10.8.1  基本概念 170

10.8.2  grabCut函數 171

10.9  floodFill漫水填充分割 176

10.9.1  基本概念 176

10.9.2  floodFill函數 177

10.10  分水嶺分割法 179

10.10.1  基本概念 179

10.10.2  wathershed函數 180

第11章  圖像金字塔 184

11.1  基本概念 184

11.2  高斯金字塔 185

11.2.1  向下取樣 186

11.2.2  向上取樣 187

11.3  拉普拉斯金字塔 189

第12章  圖像形態學 191

12.1  圖像形態學基本概念 191

12.2  形態學的應用 191

12.3  數學上的形態學 192

12.3.1  拓撲學 192

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

12.3.3  數學形態學的應用 193

12.4  結構元素 193

12.5  膨脹 194

12.6  腐蝕 195

12.7  開運算 196

12.8  閉運算 197

12.9  實現腐蝕和膨脹 198

12.10  開閉運算和頂帽/黑帽 200

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

12.12  擊中擊不中 204

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

第13章  視頻處理 209

13.1  OpenCV視頻處理架構 209

13.2  捕獲視頻類VideoCapture 210

13.2.1  構造VideoCapture對象 210

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

13.2.3  讀取視頻幀 211

13.2.4  播放視頻文件 212

13.2.5  獲取和設置視頻屬性 214

13.2.6  播放攝像頭視頻 216

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

14.1  需求分析 219

14.2  技術可行性分析 220

14.2.1  國外技術分析 220

14.2.2  國內技術分析 222

14.2.3  車牌識別技術的難點 223

14.2.4  車牌識別系統概述 223

14.3  車牌定位技術 224

14.3.1  車牌特徵概述 224

14.3.2  車牌定位方法 225

14.3.3  車牌圖像預處理 229

14.3.4  車牌圖像的灰度化 229

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

14.3.6  車牌圖像的濾波 232

14.3.7  車牌圖像的二值化 233

14.3.8  車牌圖像的邊緣檢測 234

14.3.9  車牌圖像的灰度映射 234

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

14.4  車牌字符分割技術 236

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

14.4.2  車牌傾斜問題 238

14.4.3  車牌傾斜度檢測方法 239

14.4.4  車牌傾斜的校正方法 239

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

14.4.6  車牌字符分割 239

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

14.4.8  粘連車牌字符的分割 241

14.4.9  斷裂車牌字符的合並 241

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

14.5  車牌字符識別技術 242

14.5.1  模式識別 243

14.5.2  字符識別 244

14.5.3  漢字識別 254

第15章  OpenCV目標檢測 270

15.1  目標檢測概述 270

15.2  目標檢測的基本概念 272

15.3  視頻序列圖像預處理 274

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

15.4.1  YOLO運動目標檢測算法 276

15.4.2  YOLOv2概述 280

15.4.3  YOLOv3概述 281

15.4.4  實戰YOLOv3識別物體 283

15.4.5  SSD運動目標檢測算法 292

15.4.6  實戰SSD 296

15.4.7  實戰人臉檢測 298