OpenCV Android開發(fā)實戰(zhàn)
定 價:59 元
叢書名:華章IT
- 作者:賈志剛
- 出版時間:2018/6/1
- ISBN:9787111601401
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TN929.53
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書將分為兩個部分。第 一部分為基礎(chǔ)知識,從OpenCV框架的簡單介紹到OpenCV、AndroidSDK、NDK的編程應(yīng)用,系統(tǒng)全面地介紹OpenCV在移動領(lǐng)域的應(yīng)用、所涉及的OpenCV中的核心模塊、圖像處理模塊、特征提取與對象檢測模塊等。第二部分為實戰(zhàn)案例,包括OCR識別、人臉美顏、人眼實時跟蹤與渲染。
PREFACE前 言為什么要寫這本書2015年,我出版了第一本圖像處理方面的圖書《Java數(shù)字圖像處理:編程技巧與應(yīng)用實踐》,該書主要講述圖像處理的各種基礎(chǔ)算法原理與代碼實現(xiàn),基于Java語言進(jìn)行描述,沒有太多的工程應(yīng)用實踐案例,是一本編程實踐入門級的圖像處理圖書。因此我一直想再寫一本工程實踐性比較強(qiáng)的圖書,Java與Android程序員可以通過這樣的書籍,擺脫底層算法實現(xiàn)難的煩惱,快速學(xué)習(xí)相關(guān)API的使用,掌握常見的圖像處理技術(shù),快速開發(fā)應(yīng)用,上手計算機(jī)視覺應(yīng)用開發(fā);他們通過學(xué)習(xí)與參照書中的工程實踐案例,可以解決實際需求,提升個人競爭力,為企業(yè)和個人在短時間內(nèi)創(chuàng)造更大的價值。
OpenCV作為一款開源的計算機(jī)視覺框架,封裝了超過1000個常見的圖像處理算法,其SDK語言支持Java、C++、Python等。借助人工智能興起的東風(fēng),近幾年OpenCV開發(fā)者社區(qū)的發(fā)展非常迅速,人數(shù)成幾何級遞增,而且已經(jīng)對Android系統(tǒng)有了良好的支持與完備的SDK開發(fā)接口。在無須了解底層算法實現(xiàn)的情況下,借助OpenCV提供的SDK,Android開發(fā)者可以實現(xiàn)OCR識別、圖像處理、人臉檢測、相機(jī)校正、實時視頻分析與處理、AR增強(qiáng)等移動端應(yīng)用開發(fā)。
對大多數(shù)Android開發(fā)者來說,OpenCV與計算機(jī)視覺應(yīng)用開發(fā)都可能顯得有點(diǎn)陌生,因為市面上缺乏專業(yè)的工程性書籍與文檔,OpenCV社區(qū)對Android SDK本身也沒有提供完善的API文檔與代碼演示,這讓很多Android程序員無法順利使用OpenCV框架在移動端開發(fā)計算機(jī)視覺相關(guān)的應(yīng)用。本書系統(tǒng)性地講述OpenCV如何在Android系統(tǒng)上應(yīng)用開發(fā)與工程實踐,撰寫本書的時候,因為OpenCV的很多API調(diào)用參數(shù)缺少文檔說明,因此筆者需要通過編程實踐一點(diǎn)一點(diǎn)全部嘗試之后再總結(jié)出來,用實踐出真知來形容本書一點(diǎn)也不過分。筆者本人是個地道的程序員,特別理解和了解程序員的視角與工程應(yīng)用的重點(diǎn)和難點(diǎn),本書從程序員的視角出發(fā),在思路分析與代碼實現(xiàn)上,對每個案例都做了非常清楚的交代與解釋,對不同算法函數(shù)的應(yīng)用場景都有詳細(xì)的代碼演示。本書最后三個案例分別涉及OCR識別、人臉美顏算法、視頻檢測與跟蹤渲染這些實際落地場景,這三個案例是筆者本人精心挑選的,涵蓋了大多數(shù)Android開發(fā)者的工程實踐需求與工作需要,力求做到盡善盡美,然“人無完人,金無足赤”,最終還需讀者評價。
如果說我的第一本書是對我十年工作的總結(jié),那么本書就是我十年之后再出發(fā)的征途起點(diǎn),“遠(yuǎn)飛者當(dāng)換其新羽”,對廣大Android與Java程序員來說,處在人工智能時代,掌握前沿技術(shù),更新自己的技術(shù)棧,提升個人競爭力,計算機(jī)視覺與OpenCV就是個很好的方向與選擇。作為技術(shù)人員唯有鼎故革新、砥礪前行,才能不負(fù)這個最好的時代,本書也是獻(xiàn)給廣大Android與Java程序員最好的禮物。
最后,希望通過本書的知識和作者有限的經(jīng)驗,幫助廣大Android與Java程序員,以及眾多有志于從事計算機(jī)視覺的后來者,借助OpenCV框架走上計算機(jī)視覺應(yīng)用開發(fā)的道路。本書的順利出版離不開筆者對OpenCV與計算機(jī)視覺技術(shù)的興趣,更離不開筆者的毅力與本書寫作初衷。希望本書能為國內(nèi)OpenCV框架使用的普及與應(yīng)用開發(fā)實踐盡綿薄之力,若能如愿也不枉我的一番努力。
讀者對象本書適合于以下讀者對象。
廣大Android與Java程序員。
從事圖像處理的工作者。
學(xué)習(xí)圖像處理的愛好者。
希望提升自我的中高級程序員。
計算機(jī)專業(yè)高年級本科生或者研究生。
從事圖像處理行業(yè)的公司與個人。
開設(shè)圖像處理相關(guān)課程的大專院校學(xué)生。
如何閱讀本書本書共分為兩大部分,其中第一部分為第1章到第7章,系統(tǒng)地介紹了OpenCVAndroid的開發(fā)框架及功能。第二部分是本書的案例部分,系統(tǒng)全面地分析了三個實際案例,講解如何借助OpenCV框架解決實際問題。如果你已經(jīng)對Java語言和Android系統(tǒng)上的SDK開發(fā)有基本的認(rèn)識,那么可以直接開始閱讀本書,書中的源代碼也是本書的一部分,建議在閱讀本書內(nèi)容的同時,嘗試運(yùn)行與修改本書提供的源代碼,這樣有助于更加深刻地理解與之相關(guān)的API參數(shù)與算法應(yīng)用場景。
第一部分為基礎(chǔ)篇,由淺入深,從OpenCV框架的簡單介紹到OpenCV與Android SDK、NDK的編程應(yīng)用,系統(tǒng)全面地介紹了OpenCV在移動領(lǐng)域的應(yīng)用、OpenCV中的核心模塊、圖像處理模塊、特征提取與對象檢測模塊等。讀者在學(xué)習(xí)與掌握OpenCV 相關(guān)API用法的前提下可以學(xué)習(xí)第二部的實戰(zhàn)案例。
第二部分為實戰(zhàn)案例部分,由OCR識別、人臉美顏、人眼實時跟蹤與渲染三個典型案例組成。通過案例學(xué)習(xí),讀者將學(xué)會如何設(shè)計算法流程、使用組合算法API、關(guān)注應(yīng)用的性能與內(nèi)存問題,以及NDK開發(fā)技巧、其他圖像處理開發(fā)相關(guān)API的使用技巧。
此外,本書的源文件可到www.hzbook.com上搜索本書書名下載,或者到Github上下載本書演示工程,網(wǎng)址為https://github.com/gloomyfish1998/opencv4android/tree/master/samples/OpencvDemo。
本書參考資料也可從Github上下載,網(wǎng)址為https://github.com/gloomyfish1998/opencv4android。
勘誤和支持由于筆者的水平有限,編寫的時間也很倉促,書中難免會出現(xiàn)一些錯
CONTENTS
目 錄
前言
第一部分 OpenCV圖像處理系統(tǒng)學(xué)習(xí)篇
第1章 OpenCV Android開發(fā)框架 2
1.1 OpenCV是什么 2
1.1.1 OpenCV的歷史與發(fā)展 3
1.1.2 OpenCV模塊介紹 4
1.1.3 OpenCV Android SDK 5
1.2 OpenCV Android開發(fā)環(huán)境搭建 6
1.2.1 軟件下載與安裝 6
1.2.2 環(huán)境搭建 7
1.2.3 代碼測試 13
1.3 構(gòu)建演示APP 14
1.4 拍照與圖像選擇 18
1.5 小結(jié) 20
第2章 Mat與Bitmap對象 21
2.1 Mat對象 21
2.1.1 加載圖像與讀取基本信息 22
2.1.2 Mat創(chuàng)建與初始化 24
2.1.3 Mat對象保存 25
2.2 Android中的Bitmap對象 26
2.3 基礎(chǔ)形狀繪制與填充 29
2.4 Mat與Bitmap的使用與轉(zhuǎn)換 34
2.5 小結(jié) 36
第3章 Mat像素操作 37
3.1 像素讀寫 37
3.2 圖像通道與均值方差計算 40
3.3 算術(shù)操作與調(diào)整圖像的亮度和對比度 44
3.4 基于權(quán)重的圖像疊加 46
3.5 Mat的其他各種像素操作 48
3.6 小結(jié) 52
第4章 圖像操作 53
4.1 模糊 53
4.2 統(tǒng)計排序濾波 59
4.3 邊緣保留濾波 62
4.4 自定義濾波 64
4.5 形態(tài)學(xué)操作 67
4.6 閾值化與閾值 72
4.7 小結(jié) 78
第5章 基本特征檢測 79
5.1 梯度計算 79
5.2 拉普拉斯算子 82
5.3 Canny邊緣檢測 83
5.4 霍夫直線檢測 86
5.5 霍夫圓檢測 89
5.6 輪廓發(fā)現(xiàn)與繪制 91
5.7 輪廓分析 94
5.8 圖像直方圖 98
5.9 模板匹配 107
5.10 小結(jié) 110
第6章 特征檢測與匹配 111
6.1 Harris角點(diǎn)檢測 111
6.2 Shi-Tomasi角點(diǎn)檢測 114
6.3 SURF特征檢測 116
6.4 SIFT特征檢測 121
6.5 Feature2D中的檢測器與描述子 128
6.6 特征匹配查找已知對象 134
6.7 級聯(lián)分類器與人臉檢測 137
6.8 小結(jié) 143
第7章 相機(jī)使用 144
7.1 使用JavaCameraView 144
7.2 橫屏與豎屏顯示 151
7.3 相機(jī)預(yù)覽幀圖像處理 153
7.4 在預(yù)覽幀中實現(xiàn)人臉檢測 155
7.5 小結(jié) 161
第二部分 OpenCV4Android應(yīng)用實戰(zhàn)
第8章 OCR識別 164
8.1 什么是OCR 164
8.2 開源OCR框架Tesseract 167
8.3 識別身份證號碼 170
8.3.1 UI部分實現(xiàn) 171
8.3.2 號碼區(qū)域查找 172
8.3.3 號碼識別 174
8.4 提高OCR識別率 177
8.4.1 使用Tesseract命令行生成訓(xùn)練數(shù)據(jù) 177
8.4.2 圖像預(yù)處理 181
8.5 小結(jié) 184
第9章 人臉美顏 185
9.1 積分圖計算 185
9.2 局部均方差濾波 189
9.3 遮罩層生成 192
9.4 高斯權(quán)重融合 194
9.5 邊緣提升 196
9.6 美顏實現(xiàn) 198
9.7 小結(jié) 204
第10章 人眼實時跟蹤與渲染 205
10.1 界面顯示與相機(jī)預(yù)覽 205
10.2 人臉檢測與跟蹤 208
10.3 尋找眼睛候選區(qū)域 213
10.4 眼睛檢測 214
10.5 黑眼球定位 217
10.6 渲染與優(yōu)化 220
10.7 小結(jié) 222