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