OpenCV 3和Qt5計(jì)算機(jī)視覺應(yīng)用開發(fā)
定 價(jià):89 元
叢書名:華章IT
- 作者:[伊朗] 阿敏·艾哈邁迪·泰茲坎迪(Amin Ahmadi Tazehkandi) 著,劉冰郭坦譯 譯
- 出版時(shí)間:2018/12/1
- ISBN:9787111614708
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP391.413
- 頁(yè)碼:340
- 紙張:膠版紙
- 版次:1
- 開本:16開
全書共分為12章,全面系統(tǒng)地講述了OpenCV3和Qt5的核心內(nèi)容,包括:OpenCV和Qt介紹、創(chuàng)建OpenCV和Qt項(xiàng)目、Mat和QImage、圖形視圖框架、OpenCV中的圖像處理、特征與描述符、多線程、視頻分析、視頻穩(wěn)定性、調(diào)試與測(cè)試、鏈接與部署、Qt Quick應(yīng)用程序等。為了便于學(xué)習(xí)與實(shí)踐,本書提供了示例算法的編碼實(shí)現(xiàn)。也向讀者全面詳盡地介紹了基于OpenCV和Qt進(jìn)行圖像處理、計(jì)算機(jī)視覺等編程的技術(shù)和方法。
QtQt
檢測(cè)、自動(dòng)駕駛汽車的行人檢測(cè),如此等等,計(jì)算機(jī)視覺都已經(jīng)逐步用于解決這些以往需要人工介入才能解決的實(shí)時(shí)問題,這些都是OpenCV框架的應(yīng)用場(chǎng)景。在過去的幾年里,OpenCV已經(jīng)逐步發(fā)展成為一個(gè)成熟、跨平臺(tái)、專注于速度和性能的計(jì)算機(jī)視覺框架,世界各地的開發(fā)人員和研究人員都在使用OpenCV實(shí)現(xiàn)他們的計(jì)算機(jī)視覺應(yīng)用的思想和算法。
本書的目的是幫助你掌握Qt和OpenCV框架,了解它們的基本概念,以便能夠跨越各種平臺(tái)輕松地繼續(xù)獨(dú)立開發(fā)和交付計(jì)算機(jī)視覺應(yīng)用程序。為了能夠更深入地理解本書所涉及的主題,需要你熟悉C++編程概念,例如類、模板、繼承等。盡管全書介紹的教程、屏幕截圖和示例都是基于Windows操作系統(tǒng)的,但在必要的時(shí)候也會(huì)提到在macOS以及Linux操作系統(tǒng)上的不同之處。
本書是作者努力數(shù)月的成果。如果沒有Lawrence Veigas的完美編輯和Karl Phillip Buhr誠(chéng)實(shí)而有見地的評(píng)論,沒有Parth kothari,這一切都不可能完成;還要感謝Zainab Bootwala、Prajakta Naik、Aaron Lazar、Supriya Thabe、Tiksha Sarang、Rekha Nair、Jason Monteiro、Nilesh Mohite以及Packt出版公司所有人的幫助,使得這本書能夠順利完成,并能夠送達(dá)世界各地的讀者手中。
本書適合的讀者
本書是為那些對(duì)創(chuàng)建計(jì)算機(jī)視覺應(yīng)用程序感興趣的讀者準(zhǔn)備的。如果你具備C++編程的中級(jí)知識(shí),即使沒有Qt5和OpenCV 3的知識(shí),只要熟悉這些框架,也會(huì)獲益匪淺。
本書包含的內(nèi)容
第1章將介紹所有必需的初始工作。首先介紹從何處以及如何獲得Qt和OpenCV框架,然后介紹如何安裝、配置并確保在開發(fā)環(huán)境中對(duì)所有內(nèi)容進(jìn)行正確設(shè)置。
第2章將介紹Qt Creator IDE,我們將使用它開發(fā)所有應(yīng)用程序。在該章中,你將學(xué)習(xí)如何創(chuàng)建并運(yùn)行應(yīng)用程序項(xiàng)目。
第3章將介紹創(chuàng)建一個(gè)完整應(yīng)用程序所需的最常見功能,包括樣式、國(guó)際化以及對(duì)各種語(yǔ)言、插件的支持等。通過該過程,我們將獨(dú)立創(chuàng)建一個(gè)完整的計(jì)算機(jī)視覺應(yīng)用程序。
第4章列出了編寫計(jì)算機(jī)視覺應(yīng)用程序所需的基本概念。你將了解OpenCV Mat類和Qt QImage類的所有內(nèi)容,以及如何在兩個(gè)框架之間轉(zhuǎn)換和傳遞這些類等內(nèi)容。
第5章將介紹如何使用Qt圖形視圖框架及其底層類,以便在應(yīng)用程序中方便、有效地顯示和操作圖形。
第6章將介紹OpenCV框架提供的圖像處理功能。你將學(xué)習(xí)圖像變換、濾波、顏色空間、模板匹配等方面的知識(shí)。
第7章將介紹從圖像中檢測(cè)關(guān)鍵點(diǎn)和從關(guān)鍵點(diǎn)中提取描述符,以及使它們相互匹配。在該章中,你將學(xué)習(xí)各種關(guān)鍵點(diǎn)及描述符提取算法,以及如何使用這些內(nèi)容來檢測(cè)和定位圖像中的已知對(duì)象。
第8章將介紹Qt框架提供的多線程功能,介紹互斥、讀寫鎖、信號(hào)量和各種線程同步工具,還將介紹Qt中的低級(jí)(QThread)和高級(jí)(QtConcurrent)多線程技術(shù)。
第9章將介紹如何使用Qt和OpenCV框架處理視頻。你將了解如何使用MeanShift和CAMShift算法以及其他視頻處理功能實(shí)現(xiàn)目標(biāo)跟蹤。該章還將對(duì)視頻處理的所有基本概念(如直方圖和反投影圖像)進(jìn)行完整概述。
第10章將介紹Qt Creator IDE的調(diào)試功能及其相關(guān)配置和設(shè)置。你還可以通過編寫單元測(cè)試示例來了解Qt框架的單元測(cè)試能力,這些單元測(cè)試示例可在每次構(gòu)建項(xiàng)目時(shí)手動(dòng)或自動(dòng)運(yùn)行。
第11章將介紹如何動(dòng)態(tài)或靜態(tài)地構(gòu)建OpenCV和Qt框架。你將學(xué)習(xí)如何在各種平臺(tái)上部署Qt和OpenCV應(yīng)用程序。在該章的末尾,我們將使用Qt Installer 框架創(chuàng)建一個(gè)安裝程序。
第12章將介紹Qt Quick應(yīng)用程序和QML語(yǔ)言。你將學(xué)習(xí)QML語(yǔ)言語(yǔ)法,以及如何結(jié)合Qt Quick Designer創(chuàng)建美觀的用于桌面和移動(dòng)平臺(tái)的Qt Quick應(yīng)用程序。在該章中,還將學(xué)習(xí)如何集成QML和C++。
最佳配置
盡管在本書前幾章介紹了所有必需的工具和軟件、正確的版本及其安裝與配置方法,但還是有必要提供一個(gè)快速參考列表:
安裝了最新版本的Windows、macOS或Linux(如Ubuntu)操作系統(tǒng)的普通電腦
Microsoft Visual Studio(Windows)
Xcode(macOS)
CMake
Qt框架
OpenCV框架
通過上網(wǎng)搜索或者咨詢當(dāng)?shù)氐纳痰,可以了解目前電腦的通行配置與功能。然而,一臺(tái)普通電腦已經(jīng)足夠開始你的學(xué)習(xí)之旅。
下載示例代碼及彩色圖像
本書的示例代碼及所有截圖和樣圖,可以從http://www.packtpub.com通過個(gè)人賬號(hào)下載,也可以訪問華章圖書官網(wǎng)http://www.hzbook.com,通過注冊(cè)并登錄個(gè)人賬號(hào)下載。
譯者序
序
前言
評(píng)閱者簡(jiǎn)介
第1章 OpenCV和Qt簡(jiǎn)介1
1.1 需要什么2
1.2 Qt介紹3
1.2.1 Qt基本模塊3
1.2.2 Qt擴(kuò)展4
1.2.3 附加值模塊4
1.2.4 技術(shù)預(yù)覽模塊5
1.2.5 Qt支持的平臺(tái)5
1.2.6 Qt Creator6
1.3 OpenCV介紹7
1.3.1 主模塊8
1.3.2 附加模塊8
1.4 安裝Qt9
1.4.1 Qt安裝準(zhǔn)備9
1.4.2 在哪里獲得Qt10
1.4.3 安裝方法11
1.4.4 測(cè)試Qt安裝14
1.5 安裝OpenCV19
1.5.1 為構(gòu)建OpenCV做準(zhǔn)備19
1.5.2 在哪里獲得OpenCV19
1.5.3 如何構(gòu)建20
1.5.4 配置OpenCV安裝23
1.5.5 測(cè)試OpenCV安裝25
1.6 小結(jié)27
第2章 創(chuàng)建第一個(gè)Qt + OpenCV項(xiàng)目28
2.1 什么是Qt Creator29
2.2 IDE一覽30
2.2.1 Qt Creator的模式30
2.2.2 Qt Creator的選項(xiàng)窗口58
2.3 小結(jié)61
第3章 創(chuàng)建完整的Qt + OpenCV項(xiàng)目62
3.1 后臺(tái)63
3.1.1 qmake工具63
3.1.2 元對(duì)象編譯器(moc)65
3.1.3 用戶界面編譯器(uic)66
3.2 設(shè)計(jì)模式67
3.3 Qt資源系統(tǒng)69
3.4 樣式化應(yīng)用程序73
3.4.1 選擇器類型74
3.4.2 子控件75
3.4.3 偽狀態(tài)75
3.4.4 級(jí)聯(lián)75
3.5 多語(yǔ)言支持77
3.6 創(chuàng)建和使用插件81
3.6.1 接口82
3.6.2 插件84
3.6.3 插件加載器和用戶88
3.7 創(chuàng)建基礎(chǔ)94
3.8 小結(jié)96
第4章 Mat和QImage97
4.1 關(guān)于Mat類的所有內(nèi)容98
4.1.1 構(gòu)造函數(shù)、屬性與方法100
4.1.2 Mat_<_Tp>類107
4.1.3 Matx<_Tp, m, n>107
4.1.4 UMat類108
4.1.5 InputArray、OutputArry、InputOutputArray108
4.2 利用OpenCV讀取圖像109
4.3 利用OpenCV寫入圖像110
4.4 OpenCV中的視頻讀寫110
4.5 OpenCV中的HighGUI模塊112
4.6 Qt中的圖像和視頻處理113
4.6.1 QImage類113
4.6.2 QPixmap類116
4.6.3 QImageReader與QImageWriter類119
4.6.4 QPainter類119
4.6.5 Qt中的相機(jī)和視頻處理124
4.7 小結(jié)125
第5章 圖形視圖框架126
5.1 場(chǎng)景視圖對(duì)象元素架構(gòu)127
5.2 場(chǎng)景QGraphicsScene130
5.3 對(duì)象元素QGraphicsItem134
5.4 視圖QGraphicsView142
5.5 小結(jié)152
第6章 基于OpenCV的圖像處理153
6.1 圖像濾波154
6.2 圖像變換功能168
6.2.1 幾何變換168
6.2.2 其他變換174
6.3 OpenCV繪圖180
6.4 模板匹配183
6.5 小結(jié)185
第7章 特征及其描述符187
7.1 所有算法的基礎(chǔ)—Algorithm類188
7.2 二維特征框架191
7.2.1 檢測(cè)特征192
7.2.2 提取和匹配描述符204
7.3 如何選擇算法211
7.3.1 精度212
7.3.2 速度212
7.3.3 資源利用率213
7.3.4 可用性213
7.4 小結(jié)213
第8章 多線程215
8.1 Qt中的多線程216
8.2 利用QThread實(shí)現(xiàn)低級(jí)多線程217
8.2.1 子類化QThread217
8.2.2 使用moveToThread函數(shù)222
8.3 線程同步工具224
8.3.1 互斥鎖224
8.3.2 讀寫鎖226
8.3.3 信號(hào)量228
8.3.4 等待條件228
8.4 基于QtConcurrent的高級(jí)多線程230
8.5 小結(jié)235
第9章 視頻分析237
9.1 理解直方圖238
9.2 理解反投影圖像242
9.2.1 直方圖比較250
9.2.2 直方圖均衡化252
9.3 MeanShift算法和CamShift算法253
9.4 背景/前景檢測(cè)260
9.5 小結(jié)263
第10章 調(diào)試與測(cè)試265
10.1 Qt Creator調(diào)試266
10.2 Qt測(cè)試框架271
10.2.1 創(chuàng)建單元測(cè)試272
10.2.2 數(shù)據(jù)驅(qū)動(dòng)的測(cè)試276
10.2.3 基準(zhǔn)測(cè)試278
10.2.4 GUI 測(cè)試278
10.2.5 測(cè)試用例項(xiàng)目281
10.3 小結(jié)283
第11章 鏈接和部署285
11.1 后臺(tái)構(gòu)建過程286
11.1.1 預(yù)處理286
11.1.2 編譯286
11.1.3 鏈接287
11.2 構(gòu)建OpenCV靜態(tài)庫(kù)288
11.3 構(gòu)建Qt靜態(tài)庫(kù)289
11.4 部署Qt + OpenCV應(yīng)用程序295
11.4.1 使用靜態(tài)鏈接部署295
11.4.2 使用動(dòng)態(tài)鏈接部署297
11.4.3 Qt安裝程序框架299
11.5 小結(jié)302
第12章 Qt Quick應(yīng)用程序304
12.1 QML介紹305
12.2 QML中的用戶交互和腳本310
12.3 Qt Quick Designer的使用312
12.4 Qt Quick應(yīng)用程序的結(jié)構(gòu)313
12.5 集成C++和QML代碼318
12.6 Android和iOS上的Qt和OpenCV應(yīng)用程序324
12.7 小結(jié)326