智能硬件與機(jī)器視覺:基于樹莓派、Python和OpenCV
定 價:89 元
- 作者:陳佳林
- 出版時間:2020/11/1
- ISBN:9787111667698
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP302.7
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
內(nèi)容簡介
這是一部講解如何利用樹莓派、OpenCV、Python等軟硬件構(gòu)建智能硬件并在其上實現(xiàn)圖像分析、文字識別、人臉識別與追蹤、視頻監(jiān)控等機(jī)器視覺功能的實用性著作。
全書一共11章:
第1~4章首先講解了機(jī)器視覺在智能硬件領(lǐng)域的應(yīng)用場景以及智能硬件上4種常見的機(jī)器視覺技術(shù)方案;然后講解了樹莓派和OpenCV的安裝、配置以及其他準(zhǔn)備工作;*后通過一些簡單的案例和代碼手把手教讀者如何使用OpenCV。
第5~11章是本書的核心內(nèi)容,通過幾個具體的綜合案例講解了如何使用樹莓派低成本玩轉(zhuǎn)如下機(jī)器視覺場景:拍攝照片和視頻、處理相機(jī)的原始數(shù)據(jù)、道路和商場的人流統(tǒng)計、道路信息的文字識別、人臉識別與追蹤、中央AI視頻監(jiān)控等。以上案例循序漸進(jìn),環(huán)環(huán)相扣,所有代碼均可在樹莓派上運(yùn)行,可輕松移植到任何ARM開發(fā)板上。
前言
第1章 智能硬件與機(jī)器視覺1
1.1 機(jī)器視覺在智能硬件領(lǐng)域的應(yīng)用1
1.1.1 機(jī)器視覺在智慧城市的應(yīng)用2
1.1.2 機(jī)器視覺與5G的協(xié)同效應(yīng)4
1.2 智能硬件上的機(jī)器視覺技術(shù)方案選型5
1.2.1 方案A:樹莓派5
1.2.2 方案B:BeagleBoard7
1.2.3 方案C:NVIDIA Jetson8
1.2.4 方案D:Google Coral Dev Board + Edge TPU9
1.3 本章小結(jié)10
第2章 樹莓派軟硬件準(zhǔn)備11
2.1 刷寫系統(tǒng)11
2.2 硬件連接14
2.3 Linux系統(tǒng)的基本操作17
2.3.1 Linux常用命令17
2.3.2 Vim編輯器的使用19
2.4 遠(yuǎn)程連接樹莓派20
2.4.1 使用SSH連接樹莓派21
2.4.2 使用VNC連接樹莓派24
2.5 使用相機(jī)模塊拍攝一張照片28
2.6 本章小結(jié)31
第3章 安裝OpenCV32
3.1 使用pip安裝OpenCV32
3.1.1 在Ubuntu上使用pip安裝OpenCV33
3.1.2 在macOS上使用pip安裝OpenCV35
3.1.3 在樹莓派上使用pip安裝OpenCV36
3.1.4 注意事項38
3.2 樹莓派源碼編譯安裝OpenCV 439
3.2.1 擴(kuò)展TF卡并安裝依賴39
3.2.2 下載OpenCV 442
3.2.3 為OpenCV 4搭建基于Python 3的虛擬環(huán)境42
3.2.4 構(gòu)建和編譯OpenCV 444
3.2.5 測試OpenCV 447
3.2.6 可能遇到的問題47
3.3 本章小結(jié)49
第4章 通過案例手把手入門OpenCV50
4.1 開始前的準(zhǔn)備50
4.1.1 環(huán)境準(zhǔn)備50
4.1.2 項目代碼準(zhǔn)備51
4.2 OpenCV圖像簡單處理51
4.2.1 加載和顯示圖像51
4.2.2 訪問單個像素53
4.2.3 數(shù)組切片和裁剪54
4.2.4 調(diào)整圖像大小55
4.2.5 旋轉(zhuǎn)圖像57
4.2.6 平滑圖像60
4.2.7 在圖像上繪圖60
4.2.8 運(yùn)行第一個OpenCV教程的Python腳本64
4.3 OpenCV圖像對象計數(shù)64
4.3.1 目標(biāo)對象計數(shù)64
4.3.2 將圖像轉(zhuǎn)換為灰階65
4.3.3 邊緣檢測67
4.3.4 閾值處理68
4.3.5 檢測和繪制輪廓68
4.3.6 腐蝕和膨脹70
4.3.7 蒙版和按位操作71
4.3.8 運(yùn)行第二個OpenCV教程的Python腳本72
4.4 本章小結(jié)72
第5章 使用Python拍攝照片、視頻73
5.1 安裝picamera環(huán)境73
5.1.1 安裝Raspbian系統(tǒng)73
5.1.2 安裝其他系統(tǒng)74
5.1.3 升級相機(jī)固件74
5.1.4 安裝樹莓派攝像頭模組75
5.1.5 控制V1版的LED燈78
5.2 使用攝像頭拍攝照片78
5.2.1 捕獲照片并存為文件79
5.2.2 捕獲照片并存為流79
5.2.3 捕獲照片并存為PIL圖像80
5.2.4 捕獲調(diào)整了大小的圖像80
5.2.5 快拍和連拍的技巧81
5.2.6 捕獲延時攝影序列82
5.2.7 弱光下拍照82
5.2.8 網(wǎng)絡(luò)直播83
5.3 使用攝像頭拍攝視頻85
5.3.1 錄制視頻文件85
5.3.2 錄制視頻流86
5.3.3 錄制拆分為多個文件86
5.3.4 錄制循環(huán)視頻流87
5.3.5 錄制網(wǎng)絡(luò)視頻流88
5.3.6 視頻預(yù)覽疊加圖像加水印90
5.3.7 視頻輸出疊加文本、時間戳92
5.4 本章小結(jié)93
第6章 使用Python處理相機(jī)原始數(shù)據(jù)94
6.1 捕獲并直接編碼94
6.1.1 捕獲并編碼為numpy數(shù)組94
6.1.2 捕獲并編碼為opencv對象95
6.1.3 捕獲未編碼圖像(YUV)96
6.1.4 捕獲編碼圖像(RGB)99
6.1.5 自定義編碼器100
6.2 多種捕獲方法102
6.2.1 錄像時截屏102
6.2.2 多種分辨率下錄制103
6.2.3 特殊文件輸出103
6.2.4 Bayer-Raw數(shù)據(jù)獲取104
6.3 樹莓派相機(jī)的實際應(yīng)用109
6.3.1 自定義輸出:運(yùn)動檢測相機(jī)的代碼實現(xiàn)109
6.3.2 循環(huán)視頻流切割:行車記錄儀碰撞預(yù)警功能111
6.3.3 快速捕獲和處理:連拍算法實現(xiàn)112
6.3.4 錄制未經(jīng)編碼的視頻:顏色檢測116
6.3.5 快速捕獲和流傳輸:網(wǎng)絡(luò)流直播117
6.3.6 網(wǎng)絡(luò)流媒體:結(jié)合網(wǎng)頁技術(shù)直播119
6.3.7 錄制運(yùn)動矢量數(shù)據(jù):檢測視頻中的手勢121
6.4 常見錯誤集錦125
6.5 本章小結(jié)128
第7章 道路、商場人流統(tǒng)計129
7.1 原理解析130
7.1.1 目標(biāo)檢測與目標(biāo)追蹤130
7.1.2 形心追蹤算法原理131
7.1.3 人群計數(shù)器原理133
7.2 軟件環(huán)境準(zhǔn)備134
7.3 使用Python實現(xiàn)人群計數(shù)器135
7.3.1 目錄結(jié)構(gòu)135
7.3.2 形心追蹤器類CentroidTracker的實現(xiàn)135
7.3.3 追蹤目標(biāo)類TrackableObject的實現(xiàn)141
7.3.4 人群計數(shù)器的實現(xiàn)141
7.3.5 樹莓派人群計數(shù)器測試149
7.4 本章小結(jié)149
第8章 道路信息文字識別150
8.1 EAST深度學(xué)習(xí)模型151
8.1.1 EAST模型簡介151
8.1.2 相關(guān)軟件包的安裝152
8.1.3 項目工程結(jié)構(gòu)153
8.2 檢測圖片中的文字153
8.2.1 代碼編寫和解讀153
8.2.2 效果測試157
8.3 檢測視頻中的文字159
8.3.1 代碼編寫和解讀159
8.3.2 效果測試163
8.4 對文字內(nèi)容進(jìn)行識別164
8.4.1 Tesseract介紹和安裝164
8.4.2 使用Tesseract實現(xiàn)文字識別的原理166
8.4.3 代碼編寫和解讀168
8.4.4 效果測試173
8.5 本章小結(jié)175
第9章 簡單人臉追蹤176
9.1 核心原理和效果簡介176
9.2 環(huán)境準(zhǔn)備和代碼編寫177
9.2.1 使用Python實現(xiàn)形心追蹤算法177
9.2.2 人臉追蹤的實現(xiàn)182
9.3 測試人臉跟蹤效果186
9.3.1 測試效果186
9.3.2 缺陷與不足187
9.4 本章小結(jié)187
第10章 人臉追蹤安防攝像頭188
10.1 總體設(shè)計思路188
10.1.1 硬件組裝清單188
10.1.2 PID控制反饋算法189
10.1.3 人臉識別算法:基于Haar特征的級聯(lián)分類器190
10.2 軟件環(huán)境準(zhǔn)備193
10.2.1 將smbus安裝在py3cv3環(huán)境中193
10.2.2 打開樹莓派的Camera接口并安裝驅(qū)動193
10.2.3 安裝gpiozero195
10.2.4 安裝imutils195
10.3 編寫代碼195
10.3.1 項目結(jié)構(gòu)196
10.3.2 實時調(diào)節(jié)反饋機(jī)制:PIDController196
10.3.3 在視頻中檢測到人臉198
10.3.4 使用GPIOZERO進(jìn)行舵機(jī)控制200
10.4 使用PID調(diào)節(jié)二自由度云臺206
10.4.1 PID參數(shù)調(diào)試206
10.4.2 運(yùn)行二自由度人臉追蹤攝像頭208
10.5 本章小結(jié)208
第11章 多路攝像頭中央AI監(jiān)控209
11.1 網(wǎng)絡(luò)傳輸OpenCV幀209
11.1.1 實現(xiàn)目標(biāo)和方法209
11.1.2 消息傳遞的概念210
11.1.3 項目實現(xiàn)流程211
11.2 ImageZMQ消息傳遞系統(tǒng)211
11.2.1 什么是ZMQ212
11.2.2 基于ZMQ的圖片消息傳遞庫:ImageZMQ212
11.2.3 ImageZMQ依賴的軟件包212
11.2.4 項目整體介紹213
11.3 多路樹莓派攝像頭配置214
11.3.1 配置樹莓派客戶端的主機(jī)名214
11.3.2 樹莓派發(fā)送OpenCV視頻流216
11.3.3 將代碼放到樹莓派目錄中218
11.4 配置中央監(jiān)控室服務(wù)器端和Caffe框架218
11.4.1 安裝Caffe框架218
11.4.2 實現(xiàn)OpenCV視頻監(jiān)控接收器218
11.4.3 使用MobileNet SSD對幀進(jìn)行推理220
11.5 使用OpenCV實現(xiàn)視頻流網(wǎng)絡(luò)傳輸225
11.6 本章小結(jié)226