OpenCV Android開發實戰 ( 簡體 字) |
作者:賈志剛 | 類別:1. -> 教材 -> 數位影像處理 2. -> 程式設計 -> 手機程式 -> Android |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 49239 詢問書籍請說出此書號!【缺書】 NT售價: 295 元 |
出版日:6/1/2018 |
頁數:223 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787111601401 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:為什么要寫這本書
2015年,我出版了第一本圖像處理方面的圖書《Java數字圖像處理:編程技巧與應用實踐》,該書主要講述圖像處理的各種基礎算法原理與代碼實現,基于Java語言進行描述,沒有太多的工程應用實踐案例,是一本編程實踐入門級的圖像處理圖書。因此我一直想再寫一本工程實踐性比較強的圖書,Java與Android程序員可以通過這樣的書籍,擺脫底層算法實現難的煩惱,快速學習相關API的使用,掌握常見的圖像處理技術,快速開發應用,上手計算機視覺應用開發;他們通過學習與參照書中的工程實踐案例,可以解決實際需求,提升個人競爭力,為企業和個人在短時間內創造更大的價值。
OpenCV作為一款開源的計算機視覺框架,封裝了超過1000個常見的圖像處理算法,其SDK語言支持Java、C++、Python等。借助人工智能興起的東風,近幾年OpenCV開發者社區的發展非常迅速,人數成幾何級遞增,而且已經對Android系統有了良好的支持與完備的SDK開發接口。在無須了解底層算法實現的情況下,借助OpenCV提供的SDK,Android開發者可以實現OCR識別、圖像處理、人臉檢測、相機校正、實時視頻分析與處理、AR增強等移動端應用開發。
對大多數Android開發者來說,OpenCV與計算機視覺應用開發都可能顯得有點陌生,因為市面上缺乏專業的工程性書籍與文檔,OpenCV社區對Android SDK本身也沒有提供完善的API文檔與代碼演示,這讓很多Android程序員無法順利使用OpenCV框架在移動端開發計算機視覺相關的應用。本書系統性地講述OpenCV如何在Android系統上應用開發與工程實踐,撰寫本書的時候,因為OpenCV的很多API調用參數缺少文檔說明,因此筆者需要通過編程實踐一點一點全部嘗試之后再總結出來,用實踐出真知來形容本書一點也不過分。筆者本人是個地道的程序員,特別理解和了解程序員的視角與工程應用的重點和難點,本書從程序員的視角出發,在思路分析與代碼實現上,對每個案例都做了非常清楚的交代與解釋,對不同算法函數的應用場景都有詳細的代碼演示。本書最后三個案例分別涉及OCR識別、人臉美顏算法、視頻檢測與跟蹤渲染這些實際落地場景,這三個案例是筆者本人精心挑選的,涵蓋了大多數Android開發者的工程實踐需求與工作需要,力求做到盡善盡美,然“人無完人,金無足赤”,最終還需讀者評價。
如果說我的第一本書是對我十年工作的總結,那么本書就是我十年之后再出發的征途起點,“遠飛者當換其新羽”,對廣大Android與Java程序員來說,處在人工智能時代,掌握前沿技術,更新自己的技術棧,提升個人競爭力,計算機視覺與OpenCV就是個很好的方向與選擇。作為技術人員唯有鼎故革新、砥礪前行,才能不負這個最好的時代,本書也是獻給廣大Android與Java程序員最好的禮物。
最后,希望通過本書的知識和作者有限的經驗,幫助廣大Android與Java程序員,以及眾多有志于從事計算機視覺的后來者,借助OpenCV框架走上計算機視覺應用開發的道路。本書的順利出版離不開筆者對OpenCV與計算機視覺技術的興趣,更離不開筆者的毅力與本書寫作初衷。希望本書能為國內OpenCV框架使用的普及與應用開發實踐盡綿薄之力,若能如愿也不枉我的一番努力。
讀者對象
本書適合于以下讀者對象。
廣大Android與Java程序員。
從事圖像處理的工作者。
學習圖像處理的愛好者。
希望提升自我的中高級程序員。
計算機專業高年級本科生或者研究生。
從事圖像處理行業的公司與個人。
開設圖像處理相關課程的大專院校學生。
如何閱讀本書
本書共分為兩大部分,其中第一部分為第1章到第7章,系統地介紹了OpenCV
Android的開發框架及功能。第二部分是本書的案例部分,系統全面地分析了三個實際案例,講解如何借助OpenCV框架解決實際問題。如果你已經對Java語言和Android系統上的SDK開發有基本的認識,那么可以直接開始閱讀本書,書中的源代碼也是本書的一部分,建議在閱讀本書內容的同時,嘗試運行與修改本書提供的源代碼,這樣有助于更加深刻地理解與之相關的API參數與算法應用場景。
第一部分為基礎篇,由淺入深,從OpenCV框架的簡單介紹到OpenCV與Android SDK、NDK的編程應用,系統全面地介紹了OpenCV在移動領域的應用、OpenCV中的核心模塊、圖像處理模塊、特征提取與對象檢測模塊等。讀者在學習與掌握OpenCV 相關API用法的前提下可以學習第二部的實戰案例。
第二部分為實戰案例部分,由OCR識別、人臉美顏、人眼實時跟蹤與渲染三個典型案例組成。通過案例學習,讀者將學會如何設計算法流程、使用組合算法API、關注應用的性能與內存問題,以及NDK開發技巧、其他圖像處理開發相關API的使用技巧。
此外,本書的源文件可到www.hzbook.com上搜索本書書名下載,或者到Github上下載本書演示工程,網址為https://github.com/gloomyfish1998/opencv4android/tree/master/
samples/OpencvDemo。
本書參考資料也可從Github上下載,網址為https://github.com/gloomyfish1998/opencv4android。
勘誤和支持
由于筆者的水平有限,編寫的時間也很倉促,書中難免會出現一些錯誤或者不準確的地方,不妥之處在所難免,懇請讀者批評指正。筆者已經把本書配套的源代碼上傳到Github,訪問地址為https://github.com/gloomyfish1998/opencv4android/tree/master/samples/OpencvDemo,如果有讀者想直接提交勘誤代碼,請先郵件聯系筆者,筆者同意以后即可提交,同時筆者也會根據讀者反饋更新源代碼,所以在閱讀本書之前請先從Github上獲取最新的配套源代碼。如果你有更多的寶貴意見,也歡迎發送郵件至郵箱57558865@qq.com,很期待聽到你們的真摯反饋。
致謝
OpenCV能有今天的發展,首先要感謝英特爾當時的開源決策,其次是OpenCV社區的巨大貢獻,我第一次接觸OpenCV就被它的開發效率吸引住了,可以說OpenCV是計算機視覺應用開發最好用的工具之一,特別是OpenCV3.0以后的版本,非常容易學習,所以要感謝那些為OpenCV做出過貢獻的杰出開發者。在我寫作本書的時候,機械工業出版社華章公司的編輯楊繡國老師一直沒有向我催稿,反而告訴我要安心創作,認真細致,后期審稿的時候也是逐字逐句推敲,反復修改,感謝你的耐心與嚴謹,正是你的鼓勵、幫助和支持引導我順利完成本書撰寫。
最后感謝我的爸爸、媽媽,感謝你們給予我生命,將我培養成人,感謝我的妻子在我寫書的這一年多時間里讓我從家務中解脫,給予我支持與鼓勵。
謹以此書,獻給我最親愛的兩個孩子,以及眾多熱愛OpenCV編程的朋友。
賈志剛
中國,蘇州,2018年3月 |
內容簡介:為什么要寫這本書
2015年,我出版了第一本圖像處理方面的圖書《Java數字圖像處理:編程技巧與應用實踐》,該書主要講述圖像處理的各種基礎算法原理與代碼實現,基于Java語言進行描述,沒有太多的工程應用實踐案例,是一本編程實踐入門級的圖像處理圖書。因此我一直想再寫一本工程實踐性比較強的圖書,Java與Android程序員可以通過這樣的書籍,擺脫底層算法實現難的煩惱,快速學習相關API的使用,掌握常見的圖像處理技術,快速開發應用,上手計算機視覺應用開發;他們通過學習與參照書中的工程實踐案例,可以解決實際需求,提升個人競爭力,為企業和個人在短時間內創造更大的價值。
OpenCV作為一款開源的計算機視覺框架,封裝了超過1000個常見的圖像處理算法,其SDK語言支持Java、C++、Python等。借助人工智能興起的東風,近幾年OpenCV開發者社區的發展非常迅速,人數成幾何級遞增,而且已經對Android系統有了良好的支持與完備的SDK開發接口。在無須了解底層算法實現的情況下,借助OpenCV提供的SDK,Android開發者可以實現OCR識別、圖像處理、人臉檢測、相機校正、實時視頻分析與處理、AR增強等移動端應用開發。
對大多數Android開發者來說,OpenCV與計算機視覺應用開發都可能顯得有點陌生,因為市面上缺乏專業的工程性書籍與文檔,OpenCV社區對Android SDK本身也沒有提供完善的API文檔與代碼演示,這讓很多Android程序員無法順利使用OpenCV框架在移動端開發計算機視覺相關的應用。本書系統性地講述OpenCV如何在Android系統上應用開發與工程實踐,撰寫本書的時候,因為OpenCV的很多API調用參數缺少文檔說明,因此筆者需要通過編程實踐一點一點全部嘗試之后再總結出來,用實踐出真知來形容本書一點也不過分。筆者本人是個地道的程序員,特別理解和了解程序員的視角與工程應用的重點和難點,本書從程序員的視角出發,在思路分析與代碼實現上,對每個案例都做了非常清楚的交代與解釋,對不同算法函數的應用場景都有詳細的代碼演示。本書最后三個案例分別涉及OCR識別、人臉美顏算法、視頻檢測與跟蹤渲染這些實際落地場景,這三個案例是筆者本人精心挑選的,涵蓋了大多數Android開發者的工程實踐需求與工作需要,力求做到盡善盡美,然“人無完人,金無足赤”,最終還需讀者評價。
如果說我的第一本書是對我十年工作的總結,那么本書就是我十年之后再出發的征途起點,“遠飛者當換其新羽”,對廣大Android與Java程序員來說,處在人工智能時代,掌握前沿技術,更新自己的技術棧,提升個人競爭力,計算機視覺與OpenCV就是個很好的方向與選擇。作為技術人員唯有鼎故革新、砥礪前行,才能不負這個最好的時代,本書也是獻給廣大Android與Java程序員最好的禮物。
最后,希望通過本書的知識和作者有限的經驗,幫助廣大Android與Java程序員,以及眾多有志于從事計算機視覺的后來者,借助OpenCV框架走上計算機視覺應用開發的道路。本書的順利出版離不開筆者對OpenCV與計算機視覺技術的興趣,更離不開筆者的毅力與本書寫作初衷。希望本書能為國內OpenCV框架使用的普及與應用開發實踐盡綿薄之力,若能如愿也不枉我的一番努力。
讀者對象
本書適合于以下讀者對象。
廣大Android與Java程序員。
從事圖像處理的工作者。
學習圖像處理的愛好者。
希望提升自我的中高級程序員。
計算機專業高年級本科生或者研究生。
從事圖像處理行業的公司與個人。
開設圖像處理相關課程的大專院校學生。
如何閱讀本書
本書共分為兩大部分,其中第一部分為第1章到第7章,系統地介紹了OpenCV
Android的開發框架及功能。第二部分是本書的案例部分,系統全面地分析了三個實際案例,講解如何借助OpenCV框架解決實際問題。如果你已經對Java語言和Android系統上的SDK開發有基本的認識,那么可以直接開始閱讀本書,書中的源代碼也是本書的一部分,建議在閱讀本書內容的同時,嘗試運行與修改本書提供的源代碼,這樣有助于更加深刻地理解與之相關的API參數與算法應用場景。
第一部分為基礎篇,由淺入深,從OpenCV框架的簡單介紹到OpenCV與Android SDK、NDK的編程應用,系統全面地介紹了OpenCV在移動領域的應用、OpenCV中的核心模塊、圖像處理模塊、特征提取與對象檢測模塊等。讀者在學習與掌握OpenCV 相關API用法的前提下可以學習第二部的實戰案例。
第二部分為實戰案例部分,由OCR識別、人臉美顏、人眼實時跟蹤與渲染三個典型案例組成。通過案例學習,讀者將學會如何設計算法流程、使用組合算法API、關注應用的性能與內存問題,以及NDK開發技巧、其他圖像處理開發相關API的使用技巧。 致謝
OpenCV能有今天的發展,首先要感謝英特爾當時的開源決策,其次是OpenCV社區的巨大貢獻,我第一次接觸OpenCV就被它的開發效率吸引住了,可以說OpenCV是計算機視覺應用開發最好用的工具之一,特別是OpenCV3.0以后的版本,非常容易學習,所以要感謝那些為OpenCV做出過貢獻的杰出開發者。在我寫作本書的時候,機械工業出版社華章公司的編輯楊繡國老師一直沒有向我催稿,反而告訴我要安心創作,認真細致,后期審稿的時候也是逐字逐句推敲,反復修改,感謝你的耐心與嚴謹,正是你的鼓勵、幫助和支持引導我順利完成本書撰寫。
最后感謝我的爸爸、媽媽,感謝你們給予我生命,將我培養成人,感謝我的妻子在我寫書的這一年多時間里讓我從家務中解脫,給予我支持與鼓勵。
謹以此書,獻給我最親愛的兩個孩子,以及眾多熱愛OpenCV編程的朋友。
賈志剛
中國,蘇州,2018年3月 |
目錄:前言 第一部分 OpenCV圖像處理系統學習篇 第1章 OpenCV Android開發框架 2 1.1 OpenCV是什么 2 1.1.1 OpenCV的歷史與發展 3 1.1.2 OpenCV模塊介紹 4 1.1.3 OpenCV Android SDK 5 1.2 OpenCV Android開發環境搭建 6 1.2.1 軟件下載與安裝 6 1.2.2 環境搭建 7 1.2.3 代碼測試 13 1.3 構建演示APP 14 1.4 拍照與圖像選擇 18 1.5 小結 20 第2章 Mat與Bitmap對象 21 2.1 Mat對象 21 2.1.1 加載圖像與讀取基本信息 22 2.1.2 Mat創建與初始化 24 2.1.3 Mat對象保存 25 2.2 Android中的Bitmap對象 26 2.3 基礎形狀繪制與填充 29 2.4 Mat與Bitmap的使用與轉換 34 2.5 小結 36 第3章 Mat像素操作 37 3.1 像素讀寫 37 3.2 圖像通道與均值方差計算 40 3.3 算術操作與調整圖像的亮度和對比度 44 3.4 基于權重的圖像疊加 46 3.5 Mat的其他各種像素操作 48 3.6 小結 52 第4章 圖像操作 53 4.1 模糊 53 4.2 統計排序濾波 59 4.3 邊緣保留濾波 62 4.4 自定義濾波 64 4.5 形態學操作 67 4.6 閾值化與閾值 72 4.7 小結 78 第5章 基本特征檢測 79 5.1 梯度計算 79 5.2 拉普拉斯算子 82 5.3 Canny邊緣檢測 83 5.4 霍夫直線檢測 86 5.5 霍夫圓檢測 89 5.6 輪廓發現與繪制 91 5.7 輪廓分析 94 5.8 圖像直方圖 98 5.9 模板匹配 107 5.10 小結 110 第6章 特征檢測與匹配 111 6.1 Harris角點檢測 111 6.2 Shi-Tomasi角點檢測 114 6.3 SURF特征檢測 116 6.4 SIFT特征檢測 121 6.5 Feature2D中的檢測器與描述子 128 6.6 特征匹配查找已知對象 134 6.7 級聯分類器與人臉檢測 137 6.8 小結 143 第7章 相機使用 144 7.1 使用JavaCameraView 144 7.2 橫屏與豎屏顯示 151 7.3 相機預覽幀圖像處理 153 7.4 在預覽幀中實現人臉檢測 155 7.5 小結 161 第二部分 OpenCV4Android應用實戰 第8章 OCR識別 164 8.1 什么是OCR 164 8.2 開源OCR框架Tesseract 167 8.3 識別身份證號碼 170 8.3.1 UI部分實現 171 8.3.2 號碼區域查找 172 8.3.3 號碼識別 174 8.4 提高OCR識別率 177 8.4.1 使用Tesseract命令行生成訓練數據 177 8.4.2 圖像預處理 181 8.5 小結 184 第9章 人臉美顏 185 9.1 積分圖計算 185 9.2 局部均方差濾波 189 9.3 遮罩層生成 192 9.4 高斯權重融合 194 9.5 邊緣提升 196 9.6 美顏實現 198 9.7 小結 204 第10章 人眼實時跟蹤與渲染 205 10.1 界面顯示與相機預覽 205 10.2 人臉檢測與跟蹤 208 10.3 尋找眼睛候選區域 213 10.4 眼睛檢測 214 10.5 黑眼球定位 217 10.6 渲染與優化 220 10.7 小結 222 |
序: |