 |
-- 會員 / 註冊 --
|
|
|
|
OpenCV3編程入門 ( 簡體 字) |
作者:毛星云等 | 類別:1. -> 教材 -> 數位影像處理 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 40692 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:2/1/2015 |
頁數:456 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121253317 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:計算機視覺是一個近幾年來日臻成熟的領域。隨著運算性能強勁而又價格實惠的計算設備的不斷問世,創建復雜的圖像應用從未像今天這般容易。OpenCV在計算機視覺領域扮演著重要的角色,它是一個基于開源發行的跨平臺計算機視覺庫,實現了圖像處理和計算機視覺方面的很多通用算法。自1999 年問世以來,OpenCV 已經被計算機視覺領域的學者和開發者視為首選工具,并成為了計算機視覺領域最有力的研究工具之一。 OpenCV 最初由Intel 的一個小組進行開發。在一系列的beta 版本后,OpenCV 1.0 正式版本終于在2006 年10 月19 日發布。2009 年10 月1 日,OpenCV 2.0 問世,它帶來了全新的C++接口,將OpenCV的能力無限放大。在2.0 的時代,OpenCV 增加了全新的平臺支持,包括iOS 和Andriod,通過CUDA 和OpenCL 實現了GPU 加速,為Python 和Java 用戶提供了接口,基于Github 和Buildbot 構建了充滿藝術感的持續集成的系統,所以才有 了被全世界的很多公司和學校所采用的穩定易用的OpenCV 2.4.x。2014 年8 月21 日,OpenCV 3.0 Alpha 發布,它帶來了全新的項目架構的改變,宣告了計算機視覺新時代的來臨。和其他大型項目一樣,OpenCV3 拋棄了整體統一架構,使用內核+插件的架構形式,讓自身主體更加穩定,而附加的庫則可以更加靈活多變,以保持高速的發展與迭代。 本書源自于筆者在CSDN 上連載的名為“OpenCV 入門教程”的系列博客文章,自2014 年2 月24 日發表第一篇以來,得到了廣大OpenCV 愛好者的廣泛關注與支持,累計閱讀量突破了40 多萬人次。不少讀者強烈希望將這些內容集結成書,并加入更多新的內容。于是,經過筆者半年的筆耕不輟,便有了現在這本書的誕生。 作為一本入門級的OpenCV 編程教材,本書以詳細注釋的程序代碼為主線,以新版OpenCV 最核心的core、HighGUI、improc 和feature2d 這4 個組件的相關函數、類和數據結構為出發點,詳細講解了學習新版本OpenCV 中會遇到了各種問題,并提供了詳盡的實戰代碼作為參考。本書的寫作初衷是讓更多的使用者能熟練使用采用新版C++接口的OpenCV2 或OpenCV3,了解OpenCV2 和OpenCV3的諸多細節上的區別,以推動新版OpenCV 在世界范圍內的普及。 本書的內容安排 本書分為4 個部分、11 個章節,現將內容梗概列舉如下。 第1 章 邂逅OpenCV:介紹OpenCV 的周邊概念,分析OpenCV 的基本架構,講解OpenCV3 的新特性。本章重點講解了OpenCV 的下載、安裝與配置過程;在配置完成后,帶領大家正式領略OpenCV 的魅力,講解了4 個OpenCV 圖像處理小程序,并指導大家學習如何使用OpenCV 操作視頻和調用攝像頭。 第2 章 啟程前的認知準備:進行OpenCV 官方例程的引導學習與賞析,講解如何編譯OpenCV 的源代碼,并引入了對一些周邊概念的認知。 第3 章 HighGUI 圖形用戶界面初步:對圖像的載入、顯示和輸出到文件進行詳細地分析,講解OpenCV 中滑動條的創建和使用,以及如何用鼠標進行交互操作。 第4 章 OpenCV 數據結構與基本繪圖: 講解OpenCV 中常用的數據結構以及基本的繪圖操作。 第5 章 core 組件進階:講解core 模塊的一些進階知識點,如操作圖像中的像素、圖像混合、分離顏色通道、調節圖像的對比度和亮度、進行離散傅里葉變換,以及輸入輸出XML 和YAML 文件。 第6 章 圖像處理:學習各種利用OpenCV 進行圖像處理的方法,包括屬于線性濾波的方框濾波、均值濾波與高斯濾波,屬于非線性濾波的中值濾波、雙邊濾波;兩種基本形態學操作——膨脹與腐蝕;5 種高級形態學濾波操作——開運算、閉運算、形態學梯度、頂帽以及黑帽;此外,還有漫水填充算法、圖像金字塔、圖像縮放、閾值化。 第7 章 圖像變換:講解多種類型的圖像變換方法。包括利用OpenCV 進行邊緣檢測所用到的canny 算子、sobel 算子,Laplace 算子以及scharr 濾波器;進行圖像特征提取的霍夫線變換、霍夫圓變換,重映射和仿射變換以及直方圖均衡化。 第8 章 圖像輪廓與圖像分割修復: 講解如何查找輪廓并繪制輪廓,如何尋找物體的凸包,使用多邊形來包圍輪廓,以及計算一個圖像的矩。此外還介紹了分水嶺算法和圖像修補操作的實現方法。 第9 章 直方圖與匹配:講解圖像直方圖相關的編程技巧,以及直方圖對比、 反向投影和模板匹配技術。 第10 章 角點檢測:講解Harris 角點檢測和Shi-Tomasi 角點檢測,以及一種亞像素角點檢測方法。 第11 章 特征檢測與匹配:使用OpenCV2 講解并實現了SURF、SIFT 和ORB特征檢測方法,并在FLANN 特征匹配的基礎上,進一步實現了利用Homography映射來找出已知物體。 適合閱讀本書的讀者 􀁹 研究計算機視覺以及相關領域的在校學生和老師 本書擁有詳實的內容,注釋詳盡的代碼,會是助你通過OpenCV 來研習計算機視覺理論、撰寫論文、通過畢業設計、完成科研項目的得力工具。同時,本書適合作為大學計算機視覺課程的教學用書。 􀁹 初次接觸OpenCV、有一定C/C++編程基礎的研究人員 作為一本定位為快速入門新版OpenCV 標準的編程教程,本書需要的僅僅是一些簡單的C/C++編程語言基礎。如果你已經具備了這些基礎,并對計算機視覺感興趣,那么本書正是為你所準備的。 􀁹 已經有過OpenCV 1.0 編程經驗,想快速了解并上手OpenCV2、OpenCV3編程的計算機視覺領域的專業人員如果你曾經使用過OpenCV 1.0,或者研讀過OpenCV 1.0 時代的經典著作 《Learning OpenCV》,本書會讓你倍感親切。你會發現新版OpenCV 帶了更多強大和便利的特性,讓你事半功倍,如虎添翼。 􀁹 想擁有一本新版OpenCV 接口工具書的計算機視覺愛好者本書中將自OpenCV2 以來(包括OpenCV3)的常用類和函數進行了詳細地講解,并在附錄中提供了“書本核心函數清單”以便檢索。你會在書中快速查找到你需要用到的函數、數據結構和類的用法。 􀁹 想擁有海量的詳細注釋的OpenCV2、OpenCV3 示例程序代碼的OpenCV 愛 好者 本書包含OpenCV2 版的95 個書本主線示例程序源代碼、21 個附贈示例程序源代碼,OpenCV3 版的95 個書本主線示例程序源代碼。OpenCV2、OpenCV3 兩版代碼提供分開下載。這些程序代碼都經過詳細而有條理的注釋,并提供可以獨立運行的.exe文件供快速查看程序效果,方便查看和檢索。你會在海量的示例程序中找到你需要的參考代碼,從而加速你的研究和學習。 􀁹 圖像處理、計算機視覺領域的業余愛好者 海闊憑魚躍,天高任鳥飛,計算機視覺領域的寶庫任你探索。 􀁹 開源項目愛好者 OpenCV 作為一個完全免費并開源代碼開發的計算機視覺代碼庫,有總計上百萬行的源代碼供你研究學習,本書將是引導你學習它們的良師益友。 本書的示例程序說明 本書的示例程序最初都在OpenCV 2.4.9(2014 年4 月15 日面世)版本下開發,書稿初版也是基于OpenCV 2.4.9 而寫。在書稿寫作和修訂過程中,恰逢OpenCV 3.0 Alpha(2014 年8 月21 日)和OpenCV3 Beta(2014 年11 月11 日)的發布,所以本書在審校和修訂過程中(2014 年12 月1 日),決定站在浪潮之巔,以OpenCV2 為主,加入OpenCV3 的諸多特性,讓這本書可以同時勝任OpenCV2和OpenCV3 兩個版本教材的角色。這也是為什么本書會有OpenCV2 和OpenCV3兩個獨立版本的示例程序的原因。兩個版本、詳細注釋的100 多個示例程序源代碼是本書的靈魂,現將示例程序的相關情況概括如下。 􀁹 本書包含OpenCV2 版的95 個書本主線示例程序源代碼、21 個附贈示例程 序源代碼,以及OpenCV3 版的95 個書本主線示例程序源代碼。 􀁹 OpenCV2、OpenCV3 兩版代碼提供分開下載。 􀁹 OpenCV2 版的示例程序在Windows7 64 位旗艦版、Visual Stuido 2010 、OpenCV 2.4.9 的環境下開發與測試,理論上支持OpenCV2 系列的所有版本的編譯運行。 􀁹 OpenCV3 版的示例程序在Windows7 64 位旗艦版、Visual Stuido 2010 、OpenCV 3.0 beta 的環境下開發與測試,理論上支持目前已經發布的OpenCV3 全版本。 􀁹 程序源代碼都經過詳細而有條理的注釋。 􀁹 額外提供可以獨立運行的.exe 文件供快速查看程序效果,并方便檢索。 本書配套示例代碼的下載方式有以下幾種。 􀁹 掃描本書封面后勒口的二維碼,得到下載地址。 􀁹 在作者博客(http://blog.csdn.net/poem_qianmo)中單擊相應的書本維護博文里貼出的下載鏈接。 􀁹 在電子工業出版社的官方網站(http://www.phei.com.cn)中進行下載。 􀁹 直接用搜索引擎搜索“《OpenCV3 編程入門》書本配套源代碼”,找到對應 的下載地址進行下載。 致謝 首先需要感謝我的導師,南京航空航天大學冷雪飛教授的知遇之恩,她也親自參與撰寫了本書的部分章節。在攻讀碩士學位階段,如果沒有導師的諄諄教誨,我不會和OpenCV 相遇,也就不會有此書的出版。 感謝我的同門師兄王碧輝與吳松森參與撰寫本書的部分章節,他們為本書的完善做出了卓越的貢獻。 感謝OpenCV 開發團隊為世界研發出如此強大且穩定、易用的計算機開源視覺庫,并持續不斷地對其進行維護與更新。 感謝父母將我養育成人,感謝家人們的噓寒問暖,你們是我最堅強的后盾。 感謝母校南京航空航天大學賜予我一顆不甘平庸、上下求索的心。 感謝南京航空航天大學的戴泉晨老師對本書出版所做出的幫助與支持。 感謝國家自然科學基金青年科學基金項目“新型單定子二自由度超聲電機及 其驅動的智能云臺系統的關鍵技術研究”(項目批準號:51205193)對本書理論研究方面提供的經費支持。 感謝電子工業出版社博文視點的陳曉猛和丁一瓊編輯為本書的出版所做的大量的工作,他們對出版物的專業和嚴謹的態度給我留下了深刻的印象。 最后,需要感謝我博客上的眾多讀者們,是你們對這本書的期待和熱情的留 言讓我有了完成這本書的動力和勇氣。 交流與勘誤 由于編者水平有限,書籍即使經過了多次的校對,也難免會有疏漏之處。希望書本前的你,能夠熱心地指出書本中錯誤,以便在這本書下一版印刷的時候,能以一個更完美更嚴謹的樣子,呈現在大家的面前。另外,你要相信你不是一個人在戰斗,在作者的博客中,可以找到與自己志同道合的眾多喜歡計算機視覺編程技術的愛好者們。我們可以一同交流,共同學習進步。 最后,愿大家在本書的幫助下,都能很好地入門和掌握新版OpenCV。 愿本書能為新版OpenCV 在國內的普及以及在世界范圍內的發展,獻上綿薄之力。 作者博客地址:http://blog.csdn.net/poem_qianmo 作者聯系郵箱:happylifemxy@163.com 作者新浪微博:@淺墨_毛星云 淺墨 2014 年12 月于南京 |
內容簡介:OpenCV在計算機視覺領域扮演著重要的角色。作為一個基于開源發行的跨平臺計算機視覺庫,OpenCV實現了圖像處理和計算機視覺方面的很多通用算法。本書以當前最新版本的OpenCV最常用最核心的組件模塊為索引,深入淺出地介紹了OpenCV2和OpenCV3中的強大功能、性能,以及新特性。書本配套的OpenCV2和OpenCV3雙版本的示例代碼包中,含有總計兩百多個詳細注釋的程序源代碼與思路說明。讀者可以按圖索驥,按技術方向進行快速上手和深入學習。 本書要求讀者具有基礎的C/C++知識,適合研究計算機視覺以及相關領域的在校學生和老師、初次接觸OpenCV但有一定C/C++編程基礎的研究人員,以及已有過OpenCV 1.0編程經驗,想快速了解并上手OpenCV2、OpenCV3編程的計算機視覺領域的專業人員。本書也適合于圖像處理、計算機視覺領域的業余愛好者、開源項目愛好者做為通向新版OpenCV的參考手冊之用。 本書配套的【示例程序】、【.exe可執行文件】、【書內彩圖】的下載鏈接可通過掃描本書封底或后勒口的二維碼獲取。 |
目錄:第一部分 快速上手OpenCV 1 第1 章 邂逅OpenCV 3 1 1 OpenCV 周邊概念認知 4 1 1 1 圖像處理、計算機視覺與OpenCV 4 1 1 2 OpenCV 概述 4 1 1 3 起源及發展 5 1 1 4 應用概述 6 1 2 OpenCV 基本架構分析 7 1 3 OpenCV3 帶來了什么 11 1 3 1 項目架構的改變 11 1 3 2 將OpenCV2 代碼升級到OpenCV3 報錯時的一些策略 12 1 4 OpenCV 的下載、安裝與配置 14 1 4 1 預準備:下載和安裝集成開發環境 14 1 4 2 第一步:下載和安裝OpenCV SDK 15 1 4 3 第二步:配置環境變量 16 1 4 4 第三步:工程包含(include)目錄的配置 17 1 4 5 第四步:工程庫(lib)目錄的配置 21 1 4 6 第五步:鏈接庫的配置 22 1 4 7 第六步:在Windows 文件夾下加入OpenCV 動態鏈接庫 25 1 4 8 第七步:最終測試 26 1 4 9 可能遇到的問題和解決方案 27 1 5 快速上手OpenCV 圖像處理 28 1 5 1 第一個程序:圖像顯示 29 1 5 2 第二個程序:圖像腐蝕 30 1 5 3 第三個程序:圖像模糊 31 1 5 4 第四個程序:canny 邊緣檢測 32 1 6 OpenCV 視頻操作基礎 34 1 6 1 讀取并播放視頻 34 1 6 2 調用攝像頭采集圖像 35 1 7 本章小結 38 目 錄 X 第2 章 啟程前的認知準備 39 2 1 OpenCV 官方例程引導與賞析 40 2 1 1 彩色目標跟蹤:Camshift 41 2 1 2 光流:optical flow 42 2 1 3 點追蹤:lkdemo 43 2 1 4 人臉識別:objectDetection 43 2 1 5 支持向量機引導 44 2 2 開源的魅力:編譯OpenCV 源代碼 45 2 2 1 下載安裝CMake 45 2 2 2 使用CMake 生成OpenCV 源代碼工程的解決方案 46 2 2 3 編譯OpenCV 源代碼 50 2 3 “opencv hpp”頭文件認知 53 2 4 命名規范約定 54 2 5 argc 與argv 參數解惑 56 2 5 1 初識main 函數中的argc 和argv 56 2 5 2 argc、argv 的具體含義 57 2 5 3 Visual Studio 中main 函數的幾種寫法說明 58 2 5 4 總結 59 2 6 格式輸出函數printf()簡析 59 2 6 1 格式輸出:printf()函數 59 2 6 2 示例程序:printf 函數的用法示例 60 2 7 智能顯示當前使用的OpenCV 版本 61 2 8 本章小結 61 第3 章 HighGUI 圖形用戶界面初步 63 3 1 圖像的載入、顯示和輸出到文件 64 3 1 1 OpenCV 的命名空間 64 3 1 2 Mat 類簡析 64 3 1 3 圖像的載入與顯示概述 65 3 1 4 圖像的載入:imread()函數 65 3 1 5 圖像的顯示:imshow()函數 66 3 1 6 關于InputArray 類型 67 3 1 7 創建窗口:namedWindow()函數 67 3 1 8 輸出圖像到文件:imwrite()函數 68 3 1 9 綜合示例程序:圖像的載入、顯示與輸出 70 3 2 滑動條的創建和使用 73 3 2 1 創建滑動條:createTrackbar()函數 73 3 2 2 獲取當前軌跡條的位置:getTrackbarPos()函數 76 3 3 鼠標操作 76 3 4 本章小結 80 目 錄 XI 第二部分 初探core 組件 83 第4 章 OpenCV 數據結構與基本繪圖 85 4 1 基礎圖像容器Mat 86 4 1 1 數字圖像存儲概述 86 4 1 2 Mat 結構的使用 86 4 1 3 像素值的存儲方法 88 4 1 4 顯式創建Mat 對象的七種方法 89 4 1 5 OpenCV 中的格式化輸出方法 91 4 1 6 輸出其他常用數據結構 94 4 1 7 示例程序:基礎圖像容器Mat 類的使用 95 4 2 常用數據結構和函數 95 4 2 1 點的表示:Point 類 96 4 2 2 顏色的表示:Scalar 類 96 4 2 3 尺寸的表示:Size 類 96 4 2 4 矩形的表示:Rect 類 97 4 2 5 顏色空間轉換:cvtColor()函數 98 4 2 6 其他常用的知識點 100 4 3 基本圖形的繪制 100 4 3 1 DrawEllipse()函數的寫法 101 4 3 2 DrawFilledCircle()函數的寫法 102 4 3 3 DrawPolygon()函數的寫法 102 4 3 4 DrawLine()函數的寫法 103 4 3 5 main 函數的寫法 104 4 4 本章小結 106 第5 章 core 組件進階 107 5 1 訪問圖像中的像素 108 5 1 1 圖像在內存之中的存儲方式 108 5 1 2 顏色空間縮減 108 5 1 3 LUT 函數:Look up table 操作 109 5 1 4 計時函數 110 5 1 5 訪問圖像中像素的三類方法 110 5 1 6 示例程序 114 5 2 ROI 區域圖像疊加&圖像混合 114 5 2 1 感興趣區域:ROI 115 5 2 2 線性混合操作 116 5 2 3 計算數組加權和:addWeighted()函數 117 5 2 4 綜合示例:初級圖像混合 120 目 錄 XII 5 3 分離顏色通道、多通道圖像混合 125 5 3 1 通道分離:split()函數 125 5 3 2 通道合并:merge()函數 126 5 3 3 示例程序:多通道圖像混合 127 5 4 圖像對比度、亮度值調整 131 5 4 1 理論依據 131 5 4 2 訪問圖片中的像素 131 5 4 3 示例程序:圖像對比度、亮度值調整 132 5 5 離散傅里葉變換 135 5 5 1 離散傅里葉變換的原理 135 5 5 2 dft()函數詳解 136 5 5 3 返回DFT 最優尺寸大小:getOptimalDFTSize()函數 137 5 5 4 擴充圖像邊界:copyMakeBorder()函數 137 5 5 5 計算二維矢量的幅值:magnitude()函數 138 5 5 6 計算自然對數:log()函數 138 5 5 7 矩陣歸一化:normalize()函數 138 5 5 8 示例程序:離散傅里葉變換 139 5 6 輸入輸出XML 和YAML 文件 144 5 6 1 XML 和YAML 文件簡介 144 5 6 2 FileStorage 類操作文件的使用引導 144 5 6 3 示例程序:XML 和YAML 文件的寫入 147 5 6 4 示例程序:XML 和YAML 文件的讀取 148 5 7 本章小結 150 第三部分 掌握imgproc 組件 151 第6 章 圖像處理 153 6 1 線性濾波:方框濾波、均值濾波、高斯濾波 154 6 1 1 平滑處理 154 6 1 2 圖像濾波與濾波器 154 6 1 3 線性濾波器的簡介 155 6 1 4 濾波和模糊 155 6 1 5 鄰域算子與線性鄰域濾波 155 6 1 6 方框濾波(box Filter) 156 6 1 7 均值濾波 157 6 1 8 高斯濾波 159 6 1 9 線性濾波相關OpenCV 源碼剖析 160 6 1 10 OpenCV 中GaussianBlur 函數源碼剖析 164 6 1 11 線性濾波核心API 函數 165 6 1 12 圖像線性濾波綜合示例 170 目 錄 XIII 6 2 非線性濾波:中值濾波、雙邊濾波 175 6 2 1 非線性濾波概述 175 6 2 2 中值濾波 175 6 2 3 雙邊濾波 177 6 2 4 非線性濾波相關核心API 函數 178 6 2 5 OpenCV 中的5 種圖像濾波綜合示例 181 6 3 形態學濾波(1):腐蝕與膨脹 187 6 3 1 形態學概述 187 6 3 2 膨脹 188 6 3 3 腐蝕 189 6 3 4 相關OpenCV 源碼分析溯源 190 6 3 5 相關核心API 函數講解 191 6 3 6 綜合示例:腐蝕與膨脹 195 6 4 形態學濾波(2):開運算、閉運算、形態學梯度、頂帽、黑帽 198 6 4 1 開運算 199 6 4 2 閉運算 200 6 4 3 形態學梯度 200 6 4 4 頂帽 201 6 4 5 黑帽 202 6 4 6 形態學濾波OpenCV 源碼分析溯源 203 6 4 7 核心API 函數:morphologyEx() 205 6 4 8 各形態學操作使用范例一覽 206 6 4 9 綜合示例:形態學濾波 208 6 5 漫水填充 214 6 5 1 漫水填充的定義 214 6 5 2 漫水填充法的基本思想 214 6 5 3 實現漫水填充算法:floodFill 函數 214 6 5 4 綜合示例:漫水填充 216 6 6 圖像金字塔與圖片尺寸縮放 223 6 6 1 引言 223 6 6 2 關于圖像金字塔 223 6 6 3 高斯金字塔 225 6 6 4 拉普拉斯金字塔 226 6 6 5 尺寸調整:resize()函數 227 6 6 6 圖像金字塔相關API 函數 230 6 6 7 綜合示例:圖像金字塔與圖片尺寸縮放 234 6 7 閾值化 237 6 7 1 固定閾值操作:Threshold()函數 238 6 7 2 自適應閾值操作:adaptiveThreshold()函數 239 目 錄 XIV 6 7 3 示例程序:基本閾值操作 240 6 8 本章小結 244 第7 章 圖像變換 247 7 1 基于OpenCV 的邊緣檢測 248 7 1 1 邊緣檢測的一般步驟 248 7 1 2 canny 算子 248 7 1 3 sobel 算子 253 7 1 4 Laplacian 算子 256 7 1 5 scharr 濾波器 259 7 1 6 綜合示例:邊緣檢測 262 7 2 霍夫變換 267 7 2 1 霍夫變換概述 267 7 2 2 OpenCV 中的霍夫線變換 268 7 2 3 霍夫線變換的原理 268 7 2 4 標準霍夫變換:HoughLines()函數 270 7 2 5 累計概率霍夫變換:HoughLinesP()函數 272 7 2 6 霍夫圓變換 274 7 2 7 霍夫梯度法的原理 275 7 2 8 霍夫梯度法的缺點 276 7 2 9 霍夫圓變換:HoughCircles()函數 276 7 2 10 綜合示例:霍夫變換 278 7 3 重映射 281 7 3 1 重映射的概念 281 7 3 2 實現重映射:remap()函數 282 7 3 3 基礎示例程序:基本重映射 283 7 3 4 綜合示例程序:實現多種重映射 285 7 4 仿射變換 289 7 4 1 認識仿射變換 289 7 4 2 仿射變換的求法 290 7 4 3 進行仿射變換:warpAffine()函數 291 7 4 4 計算二維旋轉變換矩陣:getRotationMatrix2D()函數 292 7 4 5 示例程序:仿射變換 292 7 5 直方圖均衡化 295 7 5 1 直方圖均衡化的概念和特點 296 7 5 2 實現直方圖均衡化:equalizeHist()函數 297 7 5 3 示例程序:直方圖均衡化 298 7 6 本章小結 300 目 錄 XV 第8 章 圖像輪廓與圖像分割修復 303 8 1 查找并繪制輪廓 304 8 1 1 尋找輪廓:findContours()函數 304 8 1 2 繪制輪廓:drawContours()函數 305 8 1 3 基礎示例程序:輪廓查找 306 8 1 4 綜合示例程序:查找并繪制輪廓 308 8 2 尋找物體的凸包 312 8 2 1 凸包 312 8 2 2 尋找凸包:convexHull()函數 313 8 2 3 基礎示例程序:凸包檢測基礎 313 8 2 4 綜合示例程序:尋找和繪制物體的凸包 315 8 3 使用多邊形將輪廓包圍 318 8 3 1 返回外部矩形邊界:boundingRect()函數 318 8 3 2 尋找最小包圍矩形:minAreaRect()函數 318 8 3 3 尋找最小包圍圓形:minEnclosingCircle()函數 318 8 3 4 用橢圓擬合二維點集:fitEllipse()函數 319 8 3 5 逼近多邊形曲線:approxPolyDP()函數 319 8 3 6 基礎示例程序:創建包圍輪廓的矩形邊界 319 8 3 7 基礎示例程序:創建包圍輪廓的圓形邊界 321 8 3 8 綜合示例程序:使用多邊形包圍輪廓 324 8 4 圖像的矩 327 8 4 1 矩的計算:moments()函數 328 8 4 2 計算輪廓面積:contourArea()函數 328 8 4 3 計算輪廓長度:arcLength()函數 328 8 4 4 綜合示例程序:查找和繪制圖像輪廓矩 329 8 5 分水嶺算法 333 8 5 1 實現分水嶺算法:watershed()函數 334 8 5 2 綜合示例程序:分水嶺算法 334 8 6 圖像修補 338 8 6 1 實現圖像修補:inpaint()函數 340 8 6 2 綜合示例程序:圖像修補 341 8 7 本章小結 343 第9 章 直方圖與匹配 345 9 1 圖像直方圖概述 346 9 2 直方圖的計算與繪制 347 9 2 1 計算直方圖:calcHist()函數 347 9 2 2 找尋最值:minMaxLoc()函數 348 9 2 3 示例程序:繪制H—S 直方圖 348 目 錄 XVI 9 2 4 示例程序:計算并繪制圖像一維直方圖 350 9 2 5 示例程序:繪制RGB 三色直方圖 352 9 3 直方圖對比 355 9 3 1 對比直方圖:compareHist()函數 355 9 3 2 示例程序:直方圖對比 356 9 4 反向投影 360 9 4 1 引言 360 9 4 2 反向投影的工作原理 360 9 4 3 反向投影的作用 361 9 4 4 反向投影的結果 361 9 4 5 計算反向投影:calcBackProject()函數 361 9 4 6 通道復制:mixChannels()函數 362 9 4 7 綜合程序:反向投影 363 9 5 模板匹配 367 9 5 1 模板匹配的概念與原理 367 9 5 2 實現模板匹配:matchTemplate()函數 367 9 5 3 綜合示例:模板匹配 369 9 6 本章小結 373 第四部分 深入feature2d 組件 375 第10 章 角點檢測 377 10 1 Harris 角點檢測 378 10 1 1 興趣點與角點 378 10 1 2 角點檢測 378 10 1 3 harris 角點檢測 379 10 1 4 實現Harris 角點檢測:cornerHarris()函數 379 10 1 5 綜合示例:harris 角點檢測與繪制 381 10 2 Shi-Tomasi 角點檢測 384 10 2 1 Shi-Tomasi 角點檢測概述 384 10 2 2 確定圖像強角點:goodFeaturesToTrack()函數 384 10 2 3 綜合示例:Shi-Tomasi 角點檢測 385 10 3 亞像素級角點檢測 388 10 3 1 背景概述 388 10 3 2 尋找亞像素角點:cornerSubPix()函數 389 10 3 3 綜合示例:亞像素級角點檢測 389 10 4 本章小結 392 第11 章 特征檢測與匹配 395 11 1 SURF 特征點檢測 396 目 錄 XVII 11 1 1 SURF 算法概覽 396 11 1 2 SURF 算法原理 396 11 1 3 SURF 類相關OpenCV 源碼剖析 400 11 1 4 繪制關鍵點:drawKeypoints()函數 401 11 1 5 KeyPoint 類 402 11 1 6 示例程序:SURF 特征點檢測 402 11 2 SURF 特征提取 405 11 2 1 繪制匹配點:drawMatches()函數 405 11 2 2 BruteForceMatcher 類源碼分析 407 11 2 3 示例程序:SURF 特征提取 408 11 3 使用FLANN 進行特征點匹配 410 11 3 1 FlannBasedMatcher 類的簡單分析 410 11 3 2 找到最佳匹配:DescriptorMatcher::match 方法 411 11 3 3 示例程序: 使用FLANN 進行特征點匹配 411 11 3 4 綜合示例程序:FLANN 結合SURF 進行關鍵點的描述和匹配 413 11 3 5 綜合示例程序:SIFT 配合暴力匹配進行關鍵點描述和提取 417 11 4 尋找已知物體 420 11 4 1 尋找透視變換:findHomography()函數 421 11 4 2 進行透視矩陣變換:perspectiveTransform()函數 421 11 4 3 示例程序: 尋找已知物體 422 11 5 ORB 特征提取 425 11 5 1 ORB 算法概述 425 11 5 2 相關概念認知 425 11 5 3 ORB 類相關源碼簡單分析 426 11 5 4 示例程序:ORB 算法描述與匹配 426 11 6 本章小結 430 附錄 433 A1 配套示例程序清單 433 A2 隨書額外附贈的程序一覽 436 A3 書本核心函數清單 439 A4 Mat 類函數一覽 442 A4 1 構造函數:Mat::Mat 442 A4 2 析構函數Mat::~Mat 444 A4 3 Mat 類成員函數 444 主要參考文獻 447 |
序: |
|