OpenCV4應(yīng)用開發(fā):入門、進(jìn)階與工程化實(shí)踐
定 價(jià):99 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:賈志剛張振
- 出版時(shí)間:2023/11/1
- ISBN:9787111737209
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP391.413
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書包括三大部分,對應(yīng)著三個(gè)層次的OpenCV開發(fā)進(jìn)階:(1)基礎(chǔ)篇學(xué)習(xí)OpenCV基礎(chǔ)知識,知道如何簡單使用API函數(shù);(2)進(jìn)階篇學(xué)習(xí)OpenCV核心API、達(dá)到熟練掌握可以解決常見的計(jì)算機(jī)視覺問題;(3)高級實(shí)戰(zhàn)篇:綜合運(yùn)用OpenCV開發(fā)知識,解決實(shí)際問題。
第 一部分針對初級讀者,介紹什么是OpenCV、如何開始寫第 一行OpenCV代碼,圖像如何被OpenCV加載與顯示、OpenCV基礎(chǔ)API操作、Mat對象與像素操作。
第二部分針對中級讀者,從圖像卷積開始,認(rèn)真學(xué)習(xí)OpenCV圖像處理、特征提取、機(jī)器學(xué)習(xí)等核心模塊相關(guān)知識點(diǎn)、穿插大量工程案例與代碼實(shí)踐、從圖像卷積濾波到二值圖像分析、圖像特征提取、自定義對象檢測、完整系統(tǒng)化的學(xué)習(xí)OpenCV傳統(tǒng)圖像處理的經(jīng)典知識點(diǎn)與案例。真正做到扎實(shí)基礎(chǔ)、構(gòu)建中級水準(zhǔn),可以解決常見計(jì)算機(jī)視覺問題。
第三部分針對高級讀者,這是本書的重點(diǎn)與難點(diǎn),主要涉及深度神經(jīng)網(wǎng)絡(luò)運(yùn)用、DNN中支持卷積神經(jīng)網(wǎng)絡(luò)模型理解與調(diào)用、人臉檢測與識別、自定義對象檢測、深度神經(jīng)網(wǎng)絡(luò)模型壓縮與優(yōu)化、模型轉(zhuǎn)換與加速推理、tensorflow對象檢測框架與OpenCV DNN模塊結(jié)合使用等相關(guān)知識點(diǎn)、同時(shí)還有OpenCV傳統(tǒng)強(qiáng)項(xiàng)應(yīng)用二值圖像分析相關(guān)的典型工業(yè)應(yīng)用案例學(xué)習(xí)。
通過對本書的學(xué)習(xí),讀者對OpenCV整個(gè)框架理解、相關(guān)模塊的運(yùn)用能力都達(dá)到一個(gè)新的高度、有能力設(shè)計(jì)復(fù)雜的計(jì)算機(jī)視覺算法、通過OpenCV解決實(shí)際問題、把深度學(xué)習(xí)模型應(yīng)用到端側(cè)加速實(shí)現(xiàn)商業(yè)價(jià)值、拓展OpenCV與計(jì)算機(jī)視覺在各個(gè)行業(yè)的商業(yè)化落地。
(1)工業(yè)界和學(xué)術(shù)界專家聯(lián)袂推薦,一線開發(fā)專家與金牌講師撰寫,一站式解決OpenCV工程化開發(fā)痛點(diǎn)。(2)以工業(yè)級視覺應(yīng)用開發(fā)所需知識點(diǎn)為主線,講透OpenCV相關(guān)核心模塊,案例化詳解1000個(gè)常用函數(shù)以及模型的推理與加速,打通OpenCV視覺開發(fā)完整路徑。
前 言
為什么要寫這本書
當(dāng)前,人工智能熱潮席卷學(xué)術(shù)界與工業(yè)界,人工智能已經(jīng)成為時(shí)下熱門的詞匯。人工智能領(lǐng)域有兩個(gè)最引人注目的技術(shù)—計(jì)算機(jī)視覺(CV)與自然語言處理(NLP)。其中,計(jì)算機(jī)視覺應(yīng)用范圍廣泛,應(yīng)用場景眾多,市場迫切需要不同層次的計(jì)算機(jī)視覺專業(yè)人才。
作為當(dāng)下主流的計(jì)算機(jī)視覺開發(fā)工具與平臺之一,OpenCV從測試版本發(fā)布至今已有20余年,得到業(yè)界知名公司與廣大開發(fā)者的認(rèn)可。當(dāng)前OpenCV已經(jīng)集成了2000多個(gè)計(jì)算機(jī)視覺相關(guān)算法,支持深度學(xué)習(xí)模型的部署、推理。
我對圖像處理的興趣始于大學(xué)做畢業(yè)設(shè)計(jì)時(shí)。工作了一段時(shí)間之后,一個(gè)偶然的機(jī)會讓我重拾對圖像處理的興趣。于是從2011年開始,我把大量的業(yè)余時(shí)間都投入到該技術(shù)領(lǐng)域,并且接觸到了OpenCV開發(fā)框架。使用OpenCV框架幫助我節(jié)省了很多時(shí)間,加快了項(xiàng)目交付速度。后來我在博客與個(gè)人微信公眾號“OpenCV學(xué)堂”上發(fā)表了大量OpenCV開發(fā)相關(guān)的文章,得到了很多讀者的反饋、支持與鼓勵(lì)。通過撰寫這些文章,我對如何更好地使用OpenCV進(jìn)行實(shí)際項(xiàng)目開發(fā)有了更多思考,也對技術(shù)背后的知識有了更深理解與認(rèn)知。
OpenCV4發(fā)布于2018年,現(xiàn)已成為OpenCV框架的主流版本之一。相比之前的版本,OpenCV4的大量函數(shù)接口都符合并支持C++11標(biāo)準(zhǔn),學(xué)習(xí)起來就像學(xué)習(xí)其他面向?qū)ο缶幊陶Z言一樣容易。此外,OpenCV4支持多種加速機(jī)制,可以實(shí)時(shí)加速傳統(tǒng)算法及深度學(xué)習(xí)模型。OpenCV4在性能、穩(wěn)定性、易用性上完全超越了之前的各個(gè)版本。
國內(nèi)已經(jīng)出版了很多OpenCV的書籍,但是我覺得還沒有一本書能夠完整涵蓋OpenCV4開發(fā)的技術(shù)路徑。所以,我認(rèn)為我有責(zé)任把自己多年的OpenCV項(xiàng)目開發(fā)經(jīng)驗(yàn)通過本書毫無保留地呈現(xiàn)給廣大讀者。希望這本書能幫助初學(xué)者掌握基于OpenCV框架進(jìn)行開發(fā)的技術(shù),進(jìn)而投身到人工智能的技術(shù)浪潮中去。
讀者對象
本書適合以下讀者閱讀:
計(jì)算機(jī)視覺領(lǐng)域的從業(yè)者。
OpenCV的愛好者。
高等院校相關(guān)專業(yè)的師生。
C++/Python開發(fā)者。
如何閱讀本書
本書共16章,分為3篇,由淺入深地講解OpenCV的技術(shù)及應(yīng)用。
基礎(chǔ)篇(第1~4章)主要介紹了OpenCV4框架中基礎(chǔ)模塊相關(guān)的圖像知識、函數(shù)及應(yīng)用。
進(jìn)階篇(第5~12章)深入介紹了OpenCV4核心模塊的功能與應(yīng)用場景,主要包括圖像卷積、二值分析、形態(tài)學(xué)分析、特征提取、視頻分析、機(jī)器學(xué)習(xí)模塊等,其中穿插大量實(shí)踐案例。
高級與實(shí)戰(zhàn)篇(第13~16章)全面介紹了OpenCV4支持的各種性能加速技術(shù)與深度學(xué)習(xí)模型推理技術(shù),從項(xiàng)目實(shí)現(xiàn)出發(fā),講解了對象檢測、缺陷檢測、深度學(xué)習(xí)模型加速等高級應(yīng)用層面的OpenCV開發(fā)技術(shù)。
其中,第14章的大部分內(nèi)容由我的好友與合作者張振撰寫。特別感謝他在我需要幫助時(shí),給予我大力支持并提供高質(zhì)量圖書內(nèi)容。
如果你是一個(gè)初學(xué)者,我建議你從第1章開始依序閱讀本書;如果你已經(jīng)接觸過OpenCV,已有一定的基礎(chǔ),可以從進(jìn)階篇開始閱讀;如果你使用過OpenCV并有一定的開發(fā)經(jīng)驗(yàn),可以根據(jù)需要進(jìn)行閱讀。
源碼是本書內(nèi)容的一部分,希望讀者在閱讀本書的同時(shí),通過代碼實(shí)踐加深對書中內(nèi)容的理解與認(rèn)知,正所謂“紙上得來終覺淺,絕知此事要躬行”。
勘誤和支持
由于我的水平有限,書中難免會出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請讀者批評指正。我已經(jīng)把本書配套源碼上傳到碼云上,訪問地址為https://gitee.com/opencv_ai/book-opencv4-
practice。如果有讀者想直接提交勘誤之后的代碼,請先通過我的郵箱congcong009@gmail.com聯(lián)系我,經(jīng)同意后即可提交。同時(shí),我也會根據(jù)讀者反饋修改、更新源碼,所以建議讀者在閱讀本書之前先從碼云上獲取最新的配套源碼。
如果讀者有更多的寶貴意見,也歡迎發(fā)送郵件給我,期待讀者的真摯反饋。
致謝
感謝“OpenCV學(xué)堂”微信公眾號上一直支持我的各位讀者朋友,感謝你們直言不諱地指出了我文章中的很多不妥之處與需要改進(jìn)的地方,感謝你們的寶貴建議。感謝OpenVINO中文社區(qū)的堵葛亮為第15章提供技術(shù)支持與建議。
謹(jǐn)以此書獻(xiàn)給眾多熱愛OpenCV的朋友們,希望你們未來可以創(chuàng)造更大的社會價(jià)值。
賈志剛
賈志剛
OpenVINO中文社區(qū)創(chuàng)始成員、英特爾物聯(lián)網(wǎng)創(chuàng)新大使、華為晟騰HAE、51CTO學(xué)院金牌講師。在機(jī)器視覺缺陷檢測、生物醫(yī)學(xué)細(xì)胞分類與檢測識別、安防監(jiān)控視頻內(nèi)容分析與提取、人工智能軟件開發(fā)、深度學(xué)習(xí)框架集成開發(fā)等方面有深入研究,開發(fā)過多個(gè)圖像處理算法模塊并成功應(yīng)用在醫(yī)學(xué)檢測與工業(yè)檢測領(lǐng)域。開設(shè)有公眾號“OpenCV學(xué)堂”,并著有《Java數(shù)字圖像處理:編程技巧與應(yīng)用實(shí)踐》《OpenCV Android開發(fā)實(shí)戰(zhàn)》等書。
張 振
上海赫立蘇州研究院(赫芯科技)院長,具備豐富的機(jī)器視覺檢測一線研發(fā)、管理與運(yùn)營經(jīng)驗(yàn)。深耕半導(dǎo)體/SMT缺陷檢測領(lǐng)域10余年,擁有自主知識產(chǎn)權(quán)的軟件和相關(guān)專利數(shù)十項(xiàng)。多年成功創(chuàng)業(yè)經(jīng)歷,積累了豐富的研發(fā)創(chuàng)新和團(tuán)隊(duì)管理經(jīng)驗(yàn),并參與市場與客戶需求分析、技術(shù)分析與評估、方案制訂、算法迭代、驗(yàn)收指標(biāo)制定、標(biāo)準(zhǔn)機(jī)型量產(chǎn)的全流程管理與實(shí)踐。
目 錄
前言
基礎(chǔ)篇
第1章 OpenCV簡介與安裝 / 2
1.1 OpenCV簡介 / 2
1.1.1 OpenCV歷史 / 2
1.1.2 OpenCV的模塊與功能 / 3
1.1.3 OpenCV4里程碑 / 4
1.1.4 OpenCV發(fā)展現(xiàn)狀與
應(yīng)用趨勢 / 4
1.2 OpenCV源碼項(xiàng)目 / 4
1.3 OpenCV4開發(fā)環(huán)境搭建 / 5
1.4 第一個(gè)OpenCV開發(fā)程序 / 6
1.5 圖像加載與保存 / 7
1.5.1 加載圖像 / 7
1.5.2 保存圖像 / 8
1.6 加載視頻 / 9
1.7 小結(jié) / 12
第2章 Mat與像素操作 / 13
2.1 Mat對象 / 13
2.1.1 什么是Mat對象 / 13
2.1.2 一切圖像皆Mat / 14
2.1.3 Mat類型與深度 / 15
2.1.4 創(chuàng)建Mat / 15
2.2 訪問像素 / 18
2.2.1 遍歷Mat中的像素 / 18
2.2.2 像素算術(shù)運(yùn)算 / 20
2.2.3 位運(yùn)算 / 21
2.2.4 調(diào)整圖像亮度與對比度 / 22
2.3 圖像類型與通道 / 23
2.3.1 圖像類型 / 23
2.3.2 圖像通道 / 23
2.3.3 通道操作 / 24
2.4 小結(jié) / 25
第3章 色彩空間 / 26
3.1 RGB色彩空間 / 26
3.2 HSV色彩空間 / 28
3.3 LAB色彩空間 / 29
3.4 色彩空間的轉(zhuǎn)換與應(yīng)用 / 30
3.5 小結(jié) / 31
第4章 圖像直方圖 / 32
4.1 像素統(tǒng)計(jì)信息 / 32
4.2 直方圖的計(jì)算與繪制 / 34
4.2.1 直方圖計(jì)算 / 35
4.2.2 直方圖繪制 / 36
4.3 直方圖均衡化 / 37
4.4 直方圖比較 / 40
4.5 直方圖反向投影 / 41
4.6 小結(jié) / 43
進(jìn)階篇
第5章 卷積操作 / 46
5.1 卷積的概念 / 46
5.2 卷積模糊 / 49
5.3 自定義濾波 / 53
5.4 梯度提取 / 56
5.5 邊緣發(fā)現(xiàn) / 59
5.6 噪聲與去噪 / 61
5.7 邊緣保留濾波 / 64
5.8 銳化增強(qiáng) / 66
5.9 小結(jié) / 68
第6章 二值圖像 / 70
6.1 圖像閾值化分割 / 70
6.2 全局閾值計(jì)算 / 72
6.3 自適應(yīng)閾值計(jì)算 / 76
6.4 去噪與二值化 / 77
6.4.1 去噪對二值化的影響 / 77
6.4.2 其他方式的二值化 / 78
6.5 小結(jié) / 79
第7章 二值分析 / 80
7.1 二值圖像分析概述 / 80
7.2 連通組件標(biāo)記 / 82
7.3 輪廓發(fā)現(xiàn) / 85
7.3.1 輪廓發(fā)現(xiàn)函數(shù) / 85
7.3.2 輪廓繪制函數(shù) / 87
7.3.3 輪廓發(fā)現(xiàn)與繪制的示例
代碼 / 87
7.4 輪廓測量 / 88
7.5 擬合與逼近 / 90
7.6 輪廓分析 / 95
7.7 直線檢測 / 97
7.8 霍夫圓檢測 / 99
7.9 最大內(nèi)接圓與最小外接圓 / 101
7.10 輪廓匹配 / 102
7.11 最大輪廓與關(guān)鍵點(diǎn)編碼 / 104
7.12 凸包檢測 / 106
7.13 小結(jié) / 107
第8章 形態(tài)學(xué)分析 / 108
8.1 圖像形態(tài)學(xué)概述 / 108
8.2 膨脹與腐蝕 / 109
8.3 開/閉操作 / 111
8.4 形態(tài)學(xué)梯度 / 113
8.5 頂帽與黑帽 / 115
8.6 擊中/擊不中 / 116
8.7 結(jié)構(gòu)元素 / 119
8.8 距離變換 / 120
8.9 分水嶺分割 / 121
8.10 小結(jié) / 124
第9章 特征提取 / 125
9.1 圖像金字塔 / 125
9.1.1 高斯金字塔 / 125
9.1.2 拉普拉斯金字塔 / 128
9.1.3 圖像金字塔融合 / 129
9.2 Harris角點(diǎn)檢測 / 131
9.3 shi-tomas角點(diǎn)檢測 / 133
9.4 亞像素級別的角點(diǎn)檢測 / 135
9.5 HOG特征與使用 / 137
9.5.1 HOG特征描述子 / 137
9.5.2 HOG特征行人檢測 / 139
9.6 ORB特征描述子 / 140
9.6.1 關(guān)鍵點(diǎn)與描述子提取 / 140
9.6.2 描述子匹配 / 144
9.7 基于特征的對象檢測 / 148
9.7.1 單應(yīng)性矩陣計(jì)算方法 / 148
9.7.2 特征對象的位置發(fā)現(xiàn) / 150
9.8 小結(jié) / 152
第10章 視頻分析 / 153
10.1 基于顏色的對象跟蹤 / 153
10.2 視頻背景分析 / 155
10.3 幀差法背景分析 / 157
10.4 稀疏光流分析法 / 158
10.5 稠密光流分析法 / 161
10.6 均值遷移分析 / 163
10.7 小結(jié) / 166
第11章 機(jī)器學(xué)習(xí) / 167
11.1 KMeans分類 / 167
11.1.1 KMeans圖像語義
分割 / 167
11.1.2 提取主色彩構(gòu)建色卡 / 170
11.2 KNN分類 / 172
11.2.1 KNN函數(shù)支持 / 172
11.2.2 KNN實(shí)現(xiàn)手寫數(shù)字
識別 / 173
11.3 SVM分類 / 175
11.3.1 SVM的原理與分類 / 175
11.3.2 SVM函數(shù) / 176
11.3.3 SVM實(shí)現(xiàn)手寫數(shù)字
識別 / 176
11.4 SVM與HOG實(shí)現(xiàn)對象檢測 / 177
11.4.1 數(shù)據(jù)樣本特征提取 / 178
11.4.2 SVM特征分類 / 179
11.4.3 構(gòu)建SVM對象檢測器 / 179
11.5 小結(jié) / 181
第12章 深度神經(jīng)網(wǎng)絡(luò) / 182
12.1 DNN概述 / 182
12.2 圖像分類 / 183
12.3 對象檢測 / 186
12.3.1 SSD對象檢測 / 187
12.3.2 Faster-RCNN對象
檢測 / 188
12.3.3 YOLO對象檢測 / 190
12.4 ENet圖像語義分割 / 193
12.5 風(fēng)格遷移 / 195
12.6 場景文字檢測 / 197
12.7 人臉檢測 / 199
12.8 小結(jié) / 201
高級與實(shí)戰(zhàn)篇
第13章 YOLO 5自定義對象
檢測 / 204
13.1 YOLO 5對象檢測框架 / 204
13.2 YOLO 5