學(xué)習(xí)OpenCV 3(中文版)》

      網(wǎng)友投稿 1677 2025-03-31

      學(xué)習(xí)OpenCV 3(中文版)


      Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library

      [美] 安德里安 ? 凱勒 (Adrian Kaehler)

      加里 ? 布拉德斯基 (Gary Bradski) 著

      阿丘科技 劉昌祥 吳雨培 王成龍 崔玉芳 等譯

      內(nèi)容簡(jiǎn)介

      前言

      這本書提供了C++開源計(jì)算機(jī)視覺庫(OpenCV)3.0版本的工作指南,介紹了計(jì)算機(jī)視覺相關(guān)領(lǐng)域的通用背景,以便讀者更有效地使用OpenCV。

      本書的目標(biāo)

      計(jì)算機(jī)視覺在以下四個(gè)趨勢(shì)的引導(dǎo)下,已經(jīng)成為一個(gè)快速發(fā)展的領(lǐng)域:

      ? 智能手機(jī)的出現(xiàn)讓數(shù)以百萬計(jì)的用戶都擁有了相機(jī)

      ? 互聯(lián)網(wǎng)和搜索引擎聚集了海量的圖像和視頻數(shù)據(jù)

      ? 計(jì)算資源變成一種廉價(jià)的商品

      ? 視覺算法發(fā)展得更加成熟(由于深度神經(jīng)網(wǎng)絡(luò)的出現(xiàn),OpenCV也正在逐漸支持這方面技術(shù),詳情可以參考o(jì)pencv_contrib中的dnn)

      本書的目標(biāo)如下:

      ? 通過詳細(xì)講述函數(shù)的慣用用法以及正確用法,成為一本更好的OpenCV經(jīng)典參考文檔

      ? 幫助讀者對(duì)各種計(jì)算機(jī)視覺算法的工作原理有一個(gè)基礎(chǔ)的理解

      ? 培養(yǎng)讀者,使其知道什么算法工具可以使用并且應(yīng)該在什么時(shí)候使用

      ? 提供給讀者許多有效的代碼,提升其應(yīng)用計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)算法的開發(fā)效率

      ? 針對(duì)問題代碼給讀者提供建議,教讀者如何解決一些簡(jiǎn)單或復(fù)雜的問題

      本書的寫作方式是力求幫助讀者快速在計(jì)算機(jī)視覺領(lǐng)域做一些有意思的事情,因此直觀地解釋了算法是如何工作的,可以指導(dǎo)讀者設(shè)計(jì)和調(diào)試計(jì)算機(jī)視覺程序,還能夠使計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)算法的形式化描述更容易理解和記憶。

      本書受眾

      本書包含描述、工作代碼示例和OpenCV 3.x庫中包含的C++計(jì)算機(jī)視覺工具說明。因此,本書對(duì)各種不同類型的用戶都有所幫助。

      專業(yè)人士和開發(fā)者

      對(duì)于需要快速設(shè)計(jì)原型或?qū)崿F(xiàn)專業(yè)計(jì)算機(jī)視覺系統(tǒng)的專家而言,示例代碼提供的框架可以幫助他們?cè)诖嘶A(chǔ)上進(jìn)行快速開發(fā)。我們對(duì)算法的描述可以快速教會(huì)或者提醒讀者如何使用它們。由于OpenCV 3.x的設(shè)計(jì)基于位于硬件加速層(HAL)之上,所以它所實(shí)現(xiàn)的算法都可以高效運(yùn)行,并且能夠無縫應(yīng)用各種硬件平臺(tái)的諸多加速特性。

      學(xué)生

      這是我們希望能廣泛應(yīng)用于學(xué)校的教程。直觀的解釋、詳細(xì)的文檔以及示例代碼將能夠幫助你在計(jì)算機(jī)視覺之路上更快地前進(jìn),做更有趣的項(xiàng)目,最終為這個(gè)領(lǐng)域開拓新的研究方向。

      教師

      計(jì)算機(jī)視覺是一個(gè)快速發(fā)展的領(lǐng)域。我們發(fā)現(xiàn),讓學(xué)生快速瀏覽容易讀的文章并且教師在必要的地方進(jìn)行說明,再輔之以現(xiàn)階段的論文或講座,是一種非常高效的授課方法。與此同時(shí),學(xué)生可以提前開始課程設(shè)計(jì),并嘗試做一些更有挑戰(zhàn)性的任務(wù)。

      愛好者

      計(jì)算機(jī)視覺超有趣的,讓我們一起深入探索它吧。

      我們致力于為讀者提供豐富的指導(dǎo)、文檔以及代碼來快速建立實(shí)時(shí)的視覺應(yīng)用。

      本書不是什么

      這本書不是正式的論文,我們的確在很多地方討論了數(shù)學(xué)上的細(xì)節(jié)注1,但這都是為了建立一種基于此的更深層次的直覺以及闡明算法中所構(gòu)建的假設(shè)之含義。在這里,我們沒有嘗試進(jìn)行一些更加正式的數(shù)學(xué)解釋,因?yàn)檫^多的數(shù)學(xué)解釋可能會(huì)使一些人覺得枯燥。

      這本書本質(zhì)上來說更偏向于“應(yīng)用”,它將作為一個(gè)基礎(chǔ)的幫助,但是并不著力于介紹某個(gè)具體的計(jì)算機(jī)視覺領(lǐng)域分類(比如醫(yī)學(xué)圖像或者遙感圖像分析)。

      也就是說,我們相信通過閱讀這里的解釋,學(xué)生不僅能更好地學(xué)習(xí)理論,而且還能記住更多、更久。因此,這本書將是一個(gè)很好的理論課程的輔助教材,并且很適合入門課程或以項(xiàng)目為中心的課程使用。

      本書例程

      本書所有例程都基于OpenCV 3.x。這些代碼在Linux,Windows 以及 OS X都可以運(yùn)行。OpenCV也有充足的對(duì)安卓和IOS 的支持。本書所有代碼都可以在本書網(wǎng)站(http://bit.ly/learningOpenCV3)獲取,OpenCV的源碼可以在GitHub(https://github.com/opencv/opencv)獲取,OpenCV的預(yù)編譯版本可以在SourceFroge(https://sourceforge.net/projects/opencvlibrary/)獲取。

      Op e nCV現(xiàn)在也處于開發(fā)過程中,每個(gè)季度都有新的官方版本發(fā)布。如果希望得到最新版本,可以從前述的GitHub網(wǎng)站得到代碼更新。OpenCV的官方網(wǎng)站是http://opencv.org,如果是開發(fā)人員,還可以瀏覽它的維基頁面:https://github.com/opencv/opencv/wiki。

      預(yù)備知識(shí)

      在大多數(shù)情況下,讀者只需要了解如何使用C++編程。本書許多數(shù)學(xué)相關(guān)的段落都不是必須的并且也做出了相應(yīng)的標(biāo)記。本書需要的數(shù)學(xué)基礎(chǔ)包括簡(jiǎn)單的線性代數(shù)以及基礎(chǔ)矩陣運(yùn)算,并且假設(shè)讀者了解最小二乘優(yōu)化、高斯分布的基礎(chǔ)知識(shí)、貝葉斯法則以及一些簡(jiǎn)單方程的衍生和變化。

      本書對(duì)數(shù)學(xué)的介紹是為了支持建立一種對(duì)算法的直覺。讀者可以跳過數(shù)學(xué)部分以及算法描述部分,只閱讀函數(shù)解釋以及代碼示例,也可以構(gòu)建視覺應(yīng)用并且使其正常工作。

      如何使用本書

      本書并不一定要按照章節(jié)順序閱讀,它可以作為一本用戶手冊(cè):需要的時(shí)候,可以用來查詢函數(shù),如果你希望了解它的工作原理,請(qǐng)閱讀該函數(shù)相關(guān)的描述。本書的意圖在于提供一本指南。它提供對(duì)計(jì)算機(jī)視覺的基本理解以及如何在何時(shí)使用選擇的算法。

      本書的寫作目的是作為計(jì)算機(jī)視覺的本科或研究生課程的輔助教材或教科書。采取的基本策略是先讓學(xué)生能夠快速閱讀課本,然后在其他教科書或者文章中用更正式的章節(jié)進(jìn)行補(bǔ)充閱讀。每一章最后都配有練習(xí)題,可以幫助測(cè)試學(xué)生對(duì)知識(shí)的掌握程度并培養(yǎng)更多圖像處理方面的意識(shí)。

      可以采用如下任意一種方法來閱讀本書。

      抓取重點(diǎn)

      先閱讀第1~5章,之后只閱讀你所需要的章節(jié)。除了第18章和第19章(涵蓋了相機(jī)校正和雙目視覺)以及第20章~第22章(涵蓋機(jī)器學(xué)習(xí)),這本書并不需要按照章節(jié)順序閱讀。以項(xiàng)目為導(dǎo)向的學(xué)生和研發(fā)人員可以用這種方式閱讀。

      精讀

      堅(jiān)持每周閱讀兩章,這樣你就可以在11周之內(nèi)讀完第1章~第22章(第23章很短)。從項(xiàng)目開始,深入到具體研究領(lǐng)域,適當(dāng)?shù)厥褂妙~外的文獻(xiàn)和論文作為補(bǔ)充。

      速成

      在可以理解的基礎(chǔ)上盡可能快地瀏覽本書,閱讀第1章~第23章,之后開始項(xiàng)目,并使用相關(guān)文獻(xiàn)和論文在某一個(gè)領(lǐng)域進(jìn)行更深入的研究。這也許是專業(yè)人員的一個(gè)選擇,但也可能適合更高級(jí)的計(jì)算機(jī)視覺課程。

      第20章對(duì)機(jī)器學(xué)習(xí)進(jìn)行了簡(jiǎn)要的介紹,在此之后的第21章和第22章將對(duì)機(jī)器學(xué)習(xí)算法及其在OpenCV中的實(shí)現(xiàn)和實(shí)戰(zhàn)進(jìn)行更詳細(xì)的解釋。當(dāng)然,機(jī)器學(xué)習(xí)是目標(biāo)識(shí)別以及計(jì)算機(jī)視覺的重要組成部分,相關(guān)知識(shí)非常豐富以至于可以獨(dú)立成書。專業(yè)人員會(huì)發(fā)現(xiàn)這本書是進(jìn)一步探索的一個(gè)合適的起點(diǎn),或者也可以僅僅對(duì)這一部分的OpenCV代碼進(jìn)行深入研究。在OpenCV 3.x中,機(jī)器學(xué)習(xí)的接口已經(jīng)大大簡(jiǎn)化和統(tǒng)一。

      我們喜歡的計(jì)算機(jī)視覺教學(xué)方式是,在學(xué)生基本能夠理解算法工作原理的基礎(chǔ)上盡可能快速展開教學(xué),然后讓他們進(jìn)一步加深理解,進(jìn)而開始學(xué)習(xí)有意義的課程設(shè)計(jì),同時(shí)通過相關(guān)領(lǐng)域的文獻(xiàn)和論文讓學(xué)生對(duì)所選擇的領(lǐng)域擁有更深刻和系統(tǒng)的認(rèn)識(shí)。這種方法適用于半學(xué)期、一學(xué)期以及兩學(xué)期的課程。學(xué)生可以快速開始,在對(duì)視覺項(xiàng)目?jī)H僅有一般認(rèn)識(shí)的時(shí)候就開始編碼,等到進(jìn)行更富挑戰(zhàn)性和更耗時(shí)的工作的時(shí)候,指導(dǎo)教師可以提供適當(dāng)?shù)膸椭?/p>

      而對(duì)于計(jì)劃時(shí)間更長(zhǎng)的課程來說,OpenCV項(xiàng)目本身就可以成為項(xiàng)目管理的指導(dǎo)。先建立工作系統(tǒng),然后用更多的知識(shí)、細(xì)節(jié)和研究進(jìn)一步加以完善。這類課程的目的是讓每個(gè)項(xiàng)目都有一個(gè)值得自己發(fā)表的地方并且其中一些真的能夠發(fā)展壯大起來。

      3.x的代碼框架,Buildbots、GitHub的使用,pull request,單元測(cè)試和回歸測(cè)試,文檔,這些對(duì)商業(yè)軟件架構(gòu)來說都是很好的示例,值得參考。

      本書約定

      本書中使用下列約定。

      斜體(Italic)

      指示新的術(shù)語、URL、電子郵件地址、文件名、拓展名、路徑名、文件夾和Unix工具。

      固定寬度(Constant Width)

      指示指令、選項(xiàng)、選擇、變量、屬性、鍵、函數(shù)、類型、類、命名空間、方法、模塊、參數(shù)、值、對(duì)象、時(shí)間、事件句柄、XML標(biāo)記、HTML標(biāo)記、文件的內(nèi)容或者指令的輸出。

      加粗固定寬度(Constant width bold)

      指示指令以及其他應(yīng)該由用戶輸入的文本。也用來著重顯示代碼片段。

      斜體固定寬度(Constant Width Italic)

      指示應(yīng)當(dāng)由用戶提供的值取代的文本。

      […]

      指示參考目錄的引用。

      這個(gè)標(biāo)識(shí)表示建議或者一般性的筆記。

      這個(gè)標(biāo)識(shí)表示警告或需要注意的地方。

      使用代碼例程

      補(bǔ)充材料(代碼例程和練習(xí)等)都可以在https://github.com/oreillymedia/Learning-OpenCV-3_examples下載。

      比如:“Learning OpenCV 3 by Adrian Kaehler and Gary Bradski (O’Reilly)。Copyright 2017 Adrian Kaehler, Gary Bradski, 978-1-491-93799-0。”

      除了了解如何幫助你完成你的作業(yè)(最好保密),我們很樂意聽到你將計(jì)算機(jī)視覺用于學(xué)術(shù)研究或者課堂教學(xué)以及使用OpenCV來幫助你開發(fā)商業(yè)產(chǎn)品。同樣,這不是必須的,我們始終歡迎你們的來信。

      O’Reilly Safari

      更多信息請(qǐng)?jiān)L問http://oreilly.com/safari。

      聯(lián)系方式

      請(qǐng)把你對(duì)本書的意見和疑問發(fā)給出版社:

      美國(guó):

      O’Reilly Media, Inc.

      1005 Gravenstein Highway North

      Sebastopol, CA 95472

      中國(guó):

      北京市西城區(qū)西直門南大街2號(hào)成銘大廈C座807室(100035)

      奧萊利技術(shù)咨詢(北京)有限公司

      我們還有一個(gè)服務(wù)于本書的網(wǎng)站。那里有示例的列表以及未來版本的計(jì)劃。點(diǎn)擊http://bit.ly/learningOpenCV3了解這些信息。

      評(píng)論或是詢問這本書技術(shù)相關(guān)的問題,請(qǐng)發(fā)送郵件到bookquestions@oreilly.com。

      關(guān)于本書、課程、會(huì)議以及新聞更多信息,請(qǐng)?jiān)L問我們的網(wǎng)站:http://www.oreilly.com在FaceBook上找到我們:http://facebook.com/oreilly在Twitter上關(guān)注我們:http://twitter.com/oreillymedia

      在YouTube上觀看我們:http://www.youtube.com/oreillymedia

      致謝

      一個(gè)長(zhǎng)期的開源項(xiàng)目通常經(jīng)歷很多人的加入和離開。每個(gè)人都從不同方面做出了貢獻(xiàn)。這個(gè)庫的貢獻(xiàn)列表已經(jīng)太長(zhǎng)而不適合在這里展示,但是可以訪問與OpenCV綁定的文檔/opencv/docs/HTML/Contributors/doc_contributors.html,查看貢獻(xiàn)列表。

      感謝對(duì)OpenCV的幫助

      英特爾是OpenCV誕生的地方,感謝英特爾在這個(gè)庫發(fā)起和成長(zhǎng)的過程中所做出的巨大支持。時(shí)光荏苒,英特爾始終在為OpenCV籌備競(jìng)賽并做出貢獻(xiàn)。英特爾還捐贈(zèng)了內(nèi)置的性能原語代碼,為英特爾的架構(gòu)提供了無縫加速。感謝英特爾所做的這一切。

      谷歌一直是Op e nCV開發(fā)者的穩(wěn)定資助者,它為谷歌編程之夏(Go o g l e Summe r o f Code,GSoC)項(xiàng)目的Opencv實(shí)習(xí)生提供了贊助。這場(chǎng)活動(dòng)貢獻(xiàn)了許多杰出的工作成果。柳樹車庫(Willow Garage)公司提供了資金,致力于將OpenCV 2.0版本提升到3.0版本成果。在這些日子里,計(jì)算機(jī)視覺公司Itseez(最近被英特爾收購)提供了大量的工程師支持并承擔(dān)了網(wǎng)站維護(hù)工作。英特爾已經(jīng)表示繼續(xù)支持維護(hù)網(wǎng)站(謝謝)。

      在軟件層面,特別需要感謝一些機(jī)構(gòu)和個(gè)人,尤其是(英特爾)俄羅斯的軟件團(tuán)隊(duì)。其中最主要的是俄羅斯首席程序員Vadim Pisarevsky(瓦迪姆 ? 彼薩里夫斯)。他是這個(gè)庫最大的獨(dú)立貢獻(xiàn)者。Vadim還在項(xiàng)目引爆前的蕭條時(shí)期管理并且發(fā)展了OpenCV。如果要把有些人稱為OpenCV的英雄,那么一定非他莫屬。他的技術(shù)見解在我們寫書的時(shí)候也起到了巨大的幫助,在管理方面他也受到了Victor Eruhimov的支持,俄羅斯視覺公司Itseez的聯(lián)合創(chuàng)始人,現(xiàn)在是Itseez3D(已被英特爾收購)的CEO。

      在每周會(huì)議上,有幾個(gè)人一直在幫助管理庫,他們是Grace Vesom,Vincent Rabaud,Stefano Fabri,當(dāng)然還有Vadim Pisarevsky。這些會(huì)議可以在https://github.com/opencv/opencv/wiki/Meeting_notes看到。

      在此期間,許多人都為OpenCV庫做出了貢獻(xiàn),最近一些貢獻(xiàn)者分別是Dinar Ahmatnurov,Pablo Alcantarilla,Alexander Alekhin,Daniel Angelov,Dmitriy Anisimov,Anatoly Baksheev,Cristian Balint,Alexandre Benoit,Laurent Berger,Leonid Beynenson,Alexander Bokov,Alexander Bovyrin,Hilton Bristow,Vladimir Bystritsky,Antonella

      Cascitelli,Manuela Chessa,Eric Christiansen,F(xiàn)rederic Devernay,Maria Dimashova,Roman Donchenko,Vladimir Dudnik,Victor Eruhimov,Georgios Evangelidis,Stefano Fabri,Sergio Garrido,Harris Gasparakis,Yuri Gitman,Lluis Gomez,Yury Gorbachev,Elena Gvozdeva,Philipp Hasper,F(xiàn)ernando J. Iglesias Garcia,Alexander Kalistratov,Andrey Kamaev,Alexander Karsakov,Rahul Kavi,Pat O’Keefe,Siddharth Kherada,Eugene Khvedchenya,Anna Kogan,Marina Kolpakova,Kirill Kornyakov,Ivan Korolev,Maxim Kostin,Evgeniy Kozhinov,Ilya Krylov,Laksono Kurnianggoro,Baisheng Lai(賴百勝),Ilya Lavrenov,Alex Leontiev,Gil Levi,Bo Li(李波),Ilya Lysenkov,Vitaliy Lyudvichenko,Bence Magyar,Nikita Manovich,Juan Manuel Perez Rua,Konstantin Matskevich,Patrick Mihelich,Alexander Mordvintsev,F(xiàn)edor Morozov,Gregory Morse,Marius Muja,Mircea Paul Muresan,Sergei Nosov,Daniil Osokin,Seon-Wook Park,Andrey Pavlenko,Alexander Petrikov,Philip aka Dikay900,Prasanna,F(xiàn)rancesco Puja,Steven Puttemans,Vincent Rabaud,Edgar Riba,Cody Rigney,Pavel Rojtberg,Ethan Rublee,Alfonso Sanchez-Beato,Andrew Senin,Maksim Shabunin,Vlad Shakhuro,Adi Shavit,Alexander Shishkov,Sergey Sivolgin,

      Marvin Smith,Alexander Smorkalov,F(xiàn)abio Solari,Adrian Stratulat,Evgeny Talanin,Manuele Tamburrano,Ozan Tonkal,Vladimir Tyan,Yannick Verdie,Pierre Emmanuel Viel,Vladislav Vinogradov,Pavel Vlasov,Philipp Wagner,Yida Wang(王一達(dá)),Jiaolong Xu(許驕龍),Marian Zajko和Zoran Zivkovic。

      這里(https://github.com/opencv/opencv/wiki/ChangeLog)還列出了其他的貢獻(xiàn)者。最后,Arraiy現(xiàn)在也在協(xié)助維護(hù)OpenCV.org(免費(fèi)開源的代碼庫)。

      感謝對(duì)本書提供幫助的人

      Adrian致謝

      在第1版(Learning OpenCV)的寫作過程中,我邀請(qǐng)一些優(yōu)秀的教師來協(xié)助我,使得本書工作變成了可能。在這些年,從各位那里獲得的指導(dǎo)變得愈發(fā)珍貴。我對(duì)他們每個(gè)人都懷有誠(chéng)摯的謝意。我還特別想在這份感謝名單上加上我的導(dǎo)師湯姆 ? 湯貝雷諾,我欠他非常多,在他的記憶里,我會(huì)把我的貢獻(xiàn)獻(xiàn)給這本書。他是一個(gè)具有非凡智慧的人,我很驕傲自己有機(jī)會(huì)追隨他的足跡。最后,深深感謝OpenCV社區(qū),感謝你們對(duì)第1版的歡迎,感謝你們耐心等待,這一版歷經(jīng)波折總算最終完成。

      這一版花了很長(zhǎng)時(shí)間才完成,在這幾年里,我有幸與數(shù)十家不同的公司合作,擔(dān)任顧問并進(jìn)行技術(shù)研發(fā),先后作為董事會(huì)的成員、顧問團(tuán)的成員、技術(shù)總監(jiān)、研發(fā)人員以及始創(chuàng)人。我有幸看到并熱愛著研發(fā)的方方面面。我在Applied Minds公司很多年,在那里創(chuàng)建并且運(yùn)行我們的機(jī)器人部門,更準(zhǔn)確地說是Applied Minds子公司。我很欣慰地看到OpenCV是許多優(yōu)秀項(xiàng)目的核心,涉及領(lǐng)域包括醫(yī)療、農(nóng)業(yè)、航空、國(guó)防和國(guó)土安全。

      我同樣高興地發(fā)現(xiàn)這本書的第1版已經(jīng)成為幾乎所有這些機(jī)構(gòu)中的案頭必備。Gary和我用來構(gòu)建斯坦利(Stanley)的技術(shù)已經(jīng)成為無數(shù)項(xiàng)目的一部分,其中至少包含許多正在研發(fā)的自動(dòng)駕駛項(xiàng)目。它們其中的某一個(gè),或許所有都是為了改變或改善無數(shù)人的日常生活而準(zhǔn)備的,成為其中的一員是多么讓人開心啊!在這些年我遇到過無數(shù)驚人的故事——有關(guān)于第1版如何在人們所工作或教學(xué)的領(lǐng)域讓他們受益,幫助他們建立事業(yè),幫助他們完成巨大的成就——這些事情成為快樂和奇跡的源泉。我希望這本新書將繼續(xù)為你們所有人服務(wù),并激勵(lì)和支持新一代科學(xué)家、工程師和發(fā)明家前行。

      Gary致謝

      我在1999年創(chuàng)立了OpenCV項(xiàng)目,目的是能夠向所有人提供我當(dāng)時(shí)只有在頂級(jí)實(shí)驗(yàn)室里才能見到的基礎(chǔ)框架,并借此來加速計(jì)算機(jī)視覺和人工智能技術(shù)的發(fā)展。盡管很少有目標(biāo)能夠和預(yù)期一樣實(shí)現(xiàn),但我慶幸這一計(jì)劃在時(shí)隔17年后終于實(shí)現(xiàn)了。完成這一目標(biāo)還得歸功于多方的幫助,有太多的朋友和貢獻(xiàn)者,我沒辦法在此一一感謝注1。但我還是希望在這里特別感謝我在英特爾開始工作時(shí)所在的俄羅斯研究團(tuán)隊(duì),它們?cè)炀土艘粋€(gè)成功的計(jì)算機(jī)視覺公司(Itseez.com),并最終被英特爾收購。我們作為同事開始工作并建立了深厚的友誼。

      由于家中有三個(gè)十幾歲的孩子,我的妻子Sonya Bradski(桑雅 ? 布拉德斯基)做了更多的工作來支持我寫作本書,對(duì)于她,我的感謝與愛難以言表。我也一樣愛我的孩子,但要說他們加速了我這本書的出版,委實(shí)說不出口:)。

      我從幫助建立Industrial Perception公司(2013年被谷歌收購)的時(shí)候就萌生了創(chuàng)作第2版的想法。從此以后,寫書的工作就不定期地在周末和深夜進(jìn)行。不知不覺,現(xiàn)在已經(jīng)是2016年,真是時(shí)光飛逝如電啊!我在第23章結(jié)束時(shí)所做的一些思考,靈感來源于我親自參與過的機(jī)器人項(xiàng)目,一個(gè)由柳樹車庫制造的叫PR2的雙臂機(jī)器人以及斯坦福的斯坦利(Stanley)項(xiàng)目,這個(gè)機(jī)器人贏得了DARPA機(jī)器人挑戰(zhàn)賽200萬美元的大獎(jiǎng)。

      讀者朋友們,在我們結(jié)束本書創(chuàng)作之際,由衷地希望在創(chuàng)業(yè)公司、實(shí)驗(yàn)室、學(xué)術(shù)網(wǎng)站、會(huì)議、車間、風(fēng)險(xiǎn)投資以及正在研發(fā)的很酷的項(xiàng)目中看到你們的身影。然后輕松地互相致意,談一談你正在做的新東西。我發(fā)起了OpenCV,為了共同的利益來支持并加速計(jì)算機(jī)視覺以及人工智能技術(shù),接下來要看你們的了。我們生活在一個(gè)充滿創(chuàng)意的世界里,一個(gè)人可以創(chuàng)造一個(gè)罐子,下一個(gè)人就能把這個(gè)罐子變成一個(gè)鼓,如此等等,都是創(chuàng)造!用OpenCV來創(chuàng)造一些可以造福于人類的東西吧!

      目錄

      譯者序?????? xvii

      前言???????? xxi

      第1章 概述????? 1

      什么是OpenCV??????? 1

      OpenCV怎么用??????? 2

      什么是計(jì)算機(jī)視覺???? 3

      OpenCV的起源??????? 6

      OpenCV的結(jié)構(gòu)??? 7

      使用IPP來加速OpenCV???? 8

      誰擁有OpenCV??? 9

      下載和安裝OpenCV??? 9

      安裝???????????? 9

      從Git獲取最新的OpenCV????? 12

      更多的OpenCV文檔?? 13

      提供的文檔????? 13

      在線文檔和維基資源???? 13

      OpenCV貢獻(xiàn)庫?????? 15

      下載和編譯Contributed模塊???????? 16

      可移植性?????????? 16

      小結(jié)? 17

      練習(xí)? 17

      第2章 OpenCV初探??????????? 19

      頭文件??? 19

      資源?????????? 20

      第一個(gè)程序:顯示圖片?????? 21

      第二個(gè)程序:視頻??? 23

      跳轉(zhuǎn)? 24

      簡(jiǎn)單的變換????????? 28

      不那么簡(jiǎn)單的變換??? 30

      從攝像頭中讀取????? 32

      寫入AVI文件??? ????33

      小結(jié)? 34

      練習(xí)? 35

      第3章 了解OpenCV的數(shù)據(jù)類型??? 37

      基礎(chǔ)知識(shí)?????????? 37

      OpenCV的數(shù)據(jù)類型?? 37

      基礎(chǔ)類型概述??? 38

      深入了解基礎(chǔ)類型?????? 39

      輔助對(duì)象??????? 46

      工具函數(shù)??????? 53

      模板結(jié)構(gòu)??????? 60

      小結(jié)? 61

      練習(xí)? 61

      第4章 圖像和大型數(shù)組類型?????? 63

      動(dòng)態(tài)可變的存儲(chǔ)????? 63

      cv::Mat類N維稠密數(shù)組???????? 64

      創(chuàng)建一個(gè)數(shù)組??? 65

      獨(dú)立獲取數(shù)組元素?????? 69

      數(shù)組迭代器NAryMatIterator???????? 72

      通過塊訪問數(shù)組元素???? 74

      矩陣表達(dá)式:代數(shù)和cv::Mat???????? 75

      飽和轉(zhuǎn)換??????? 77

      數(shù)組還可以做很多事情??? 78

      稀疏數(shù)據(jù)類cv::SparesMat? 79

      訪問稀疏數(shù)組中的元素??? 79

      稀疏數(shù)組中的特有函數(shù)??? 82

      為大型數(shù)組準(zhǔn)備的模板結(jié)構(gòu)???????? 83

      小結(jié)? 85

      練習(xí)? 86

      第5章 矩陣操作? 87

      矩陣還可以做更多事情?????? 87

      cv::abs()??????? 90

      cv::add()??????? 91

      cv::addWeighted()??????? 92

      《學(xué)習(xí)OpenCV 3(中文版)》

      cv::bitwise_and()? 94

      cv::bitwise_not() 94

      cv::bitwise_or()?? 94

      cv::bitwise_xor()? 95

      cv::calcCovarMatrix()???? 95

      cv::cartToPolar()? 97

      cv::checkRange()? 97

      cv::compare()??? 98

      cv::completeSymm()????? 99

      cv::convertScaleAbs()???? 99

      cv::countNonZero()????? 100

      cv::Mat cv::cvarrToMat() 100

      cv::dct()??????? 101

      cv::dft()??????? 102

      cv::cvtColor()?? 103

      cv::determinant()??????? 106

      cv::divide()???? 106

      cv::eigen()????? 106

      cv::exp()?????? 107

      cv::extractImageCOI()??? 107

      cv::flip()?????? 108

      cv::gemm()???? 108

      cv::getConvertElem()和cv::getConvertScaleElem()???? 109

      cv::idct()?????? 110

      cv::inRange()??? 110

      cv::insertImageCOI()????? 111

      cv::invert()????? 111

      cv::log()??????? 112

      cv::LUT()????? 112

      cv::Mahalanobis()?????? 113

      cv::max()?????? 114

      cv::mean()????? 115

      cv::meanStdDev()?????? 116

      cv::merge()???? 116

      cv::min()?????? 116

      cv::minMaxIdx()?????? 117

      cv::minMaxLoc()??????? 118

      cv::mixChannels()?????? 119

      cv::mulSpectrums()????? 120

      cv::multiply()?? 121

      cv::mulTransposed()???? 121

      cv::norm()????? 122

      cv::normalize()? 123

      cv::perspectiveTransform()????????? 125

      cv::phase()????? 125

      cv::polarToCart()??????? 126

      cv::pow()?????? 126

      cv::randu()????? 127

      cv::randn()????? 127

      cv::repeat()???? 129

      cv::scaleAdd()?? 129

      cv::setIdentity()? 130

      cv::solve()????? 130

      cv::solveCubic()??????? 131

      cv::solvePoly()? 132

      cv::sort()?????? 132

      cv::sortIdx()???? 133

      cv::split()?????? 133

      cv::sqrt()?????? 134

      cv::subtract()??? 135

      cv::sum()?????? 135

      cv::trace()????? 135

      cv::transform()?? 136

      cv::transpose()?? 136

      小結(jié) 137

      練習(xí) 137

      第6章 繪圖和注釋???????????? 139

      繪圖 139

      藝術(shù)線條和填充多邊形?? 140

      字體和文字???? 146

      小結(jié) 148

      練習(xí) 148

      第7章 OpenCV中的函數(shù)子????? 151

      操作對(duì)象????????? 151

      主成分分析(cv::PCA)? 151

      奇異值分解cv::SVD???? 154

      隨機(jī)數(shù)發(fā)生器cv::RNG?? 157

      小結(jié) 160

      練習(xí) 160

      第8章 圖像、視頻與數(shù)據(jù)文件??? 163

      HighGUI模塊:一個(gè)可移植的圖形工具包 163

      圖像文件的處理???? 164

      圖像的載入與保存????? 165

      關(guān)于codecs的一些注釋?? 167

      圖片的編碼與解碼????? 168

      視頻的處理???????? 169

      使用cv::VideoCapture對(duì)象讀取視頻流??? 169

      使用cv::VideoWriter對(duì)象寫入視頻?? 175

      數(shù)據(jù)存儲(chǔ)????????? 176

      cv::FileStorage的寫入??? 177

      使用cv::FileStorage讀取文件??????? 179

      cv::FileNode??? 180

      小結(jié) 183

      練習(xí) 183

      第9章 跨平臺(tái)和Windows系統(tǒng)??? 187

      基于Windows開發(fā)?? 187

      HighGUI原生圖形用戶接口???????? 188

      通過Qt后端工作??????? 199

      綜合OpenCV和全功能GUI工具包??? 209

      小結(jié) 222

      練習(xí) 222

      第10章 濾波與卷積??????????? 225

      概覽 225

      預(yù)備知識(shí)????????? 225

      濾波、核和卷積??????? 225

      邊界外推和邊界處理??? 227

      閾值化操作???????? 230

      Otsu算法??? ???233

      自適應(yīng)閾值???? 233

      平滑 235

      簡(jiǎn)單模糊和方框型濾波器????????? 236

      中值濾波器???? 238

      高斯濾波器???? 239

      雙邊濾波器???? 240

      導(dǎo)數(shù)和梯度???????? 242

      索貝爾導(dǎo)數(shù)???? 242

      Scharr濾波器??? 244

      拉普拉斯變換?? 245

      圖像形態(tài)學(xué)???????? 246

      膨脹和腐蝕???? 247

      通用形態(tài)學(xué)函數(shù)??????? 250

      開操作和閉操作??????? 251

      形態(tài)學(xué)梯度???? 254

      頂帽和黑帽???? 256

      自定義核?????? 258

      用任意線性濾波器做卷積??? 259

      用cv::filter2D()進(jìn)行卷積? 259

      通過cv::sepFilter2D使用可分核????? 260

      生成卷積核???? 260

      小結(jié) 262

      練習(xí) 262

      第11章 常見的圖像變換??????? 267

      概覽 267

      拉伸、收縮、扭曲和旋轉(zhuǎn)??? 267

      均勻調(diào)整?????? 268

      圖像金字塔???? 269

      不均勻映射???? 273

      仿射變換?????? 274

      透視變換?????? 279

      通用變換????????? 282

      極坐標(biāo)映射???? 282

      LogPolar?????? 283

      任意映射?????? 287

      圖像修復(fù)????????? 287

      圖像修復(fù)?????? 288

      去噪????????? 289

      直方圖均衡化?????? 292

      cv::equalizeHist()用于對(duì)比均衡????? 294

      小結(jié) 295

      練習(xí) 295

      第12章 圖像分析??? 297

      概覽 297

      離散傅里葉變換???? 297

      cv::dft()離散傅里葉變換? 298

      cv::idft()用于離散傅里葉逆變換???? 300

      cv::mulSpectrums()頻譜乘法??????? 300

      使用傅里葉變換進(jìn)行卷積????????? 301

      cv::dct()離散余弦變換?? 303

      cv::idct()離散余弦逆變換?????????? 304

      積分圖?? 304

      cv::integral()標(biāo)準(zhǔn)求和積分???????? 306

      cv::integral()平方求和積分???????? 306

      cv::integral()傾斜求和積分???????? 307

      Canny邊緣檢測(cè)???? 307

      cv::Canny()???? 309

      Hough變換???????? 309

      Hough線變換?? 309

      Hough圓變換?? 313

      距離變換????????? 316

      cv::distanceTransform()無標(biāo)記距離變換?? 317

      cv::distanceTransform()有標(biāo)記距離變換?? 317

      分割 318

      漫水填充?????? 318

      分水嶺算法???? 322

      Grabcuts算法??? 323

      Mean-Shift分割算法??? 325

      小結(jié) 326

      練習(xí) 326

      第13章 直方圖和模板????????? 329

      OpenCV中直方圖的表示???? 331

      cv::calcHist():從數(shù)據(jù)創(chuàng)建直方圖?? 332

      基本直方圖操作???? 334

      直方圖歸一化?? 334

      直方圖二值化?? 335

      找出最顯著的區(qū)間????? 335

      比較兩個(gè)直方圖??????? 337

      直方圖用法示例??????? 339

      一些復(fù)雜的直方圖方法????? 342

      EMD距離????? 342

      反向投影?????? 347

      模板匹配????????? 350

      方差匹配方法(cv::TM_SQDIFF)?? 351

      歸一化方差匹配方法(cv::TM_SQDIFF_NORMED)??????? 352

      相關(guān)性匹配方法(cv::TM_CCORR) 352

      歸一化的互相關(guān)匹配方法(cv::TM_CCORR_NORMED)???? 352

      相關(guān)系數(shù)匹配方法(cv::TM_CCOEFF)??????????? 352

      歸一化的相關(guān)系數(shù)匹配方法(cv::TM_CCOEFF_NORMED)? 352

      小結(jié) 355

      練習(xí) 355

      第14章 輪廓?? 359

      輪廓查找????????? 359

      輪廓層次? ?????360

      繪制輪廓?????? 364

      輪廓實(shí)例?????? 365

      另一個(gè)輪廓實(shí)例??????? 366

      快速連通區(qū)域分析????? 368

      深入分析輪廓?????? 370

      多邊形逼近???? 370

      幾何及特性概括??????? 372

      幾何學(xué)測(cè)試???? 377

      匹配輪廓與圖像???? 378

      矩?? 378

      再論矩???????? 380

      使用Hu矩進(jìn)行匹配????? 383

      利用形狀場(chǎng)景方法比較輪廓??????? 384

      小結(jié) 388

      練習(xí) 389

      第15章 背景提取??? 391

      背景提取概述?????? 391

      背景提取的缺點(diǎn)???? 392

      場(chǎng)景建模????????? 392

      像素????????? 393

      幀間差分?????? 396

      平均背景法???????? 397

      累計(jì)均值,方差和協(xié)方差????????? 403

      更復(fù)雜的背景提取方法????? 410

      結(jié)構(gòu)????????? 413

      進(jìn)行背景學(xué)習(xí)?? 414

      存在移動(dòng)的前景物體時(shí)進(jìn)行背景學(xué)習(xí) 417

      背景差分:檢測(cè)前景物體????????? 418

      使用碼書法的背景模型?? 419

      關(guān)于碼書法的其他想法?? 419

      使用連通分量進(jìn)行前景清理?? 420

      小測(cè)試???????? 423

      兩種背景方法的對(duì)比??????? 425

      OpenCV中的背景提取方法的封裝?????? 425

      cv::BackgroundSubstractor基類????? 426

      KB方法??????? 427

      Zivkovic方法??? 428

      小結(jié) 431

      練習(xí) 431

      第16章 關(guān)鍵點(diǎn)和描述子??????? 433

      關(guān)鍵點(diǎn)和跟蹤基礎(chǔ)?? 433

      角點(diǎn)檢測(cè)?????? 434

      光流簡(jiǎn)介?????? 437

      Lucas-Kanade稀疏光流法???? ?????438

      廣義關(guān)鍵點(diǎn)和描述符??????? 448

      光流,跟蹤和識(shí)別????? 450

      OpenCV一般如何處理關(guān)鍵點(diǎn)和描述符?? 451

      核心關(guān)鍵點(diǎn)檢測(cè)方法??? 461

      關(guān)鍵點(diǎn)過濾???? 497

      匹配方法?????? 499

      結(jié)果顯示?????? 505

      小結(jié) 508

      練習(xí) 508

      第17章 跟蹤?? 511

      跟蹤中的概念?????? 511

      稠密光流????????? 512

      Farneback多項(xiàng)式擴(kuò)展算法????????? 513

      Dual TV-L1模型? 515

      簡(jiǎn)單光流算法?? 519

      Mean-Shift算法和Camshift 追蹤???????? 522

      Mean-Shift算法? 522

      Camshift?????? 526

      運(yùn)動(dòng)模板????????? 526

      估計(jì) 533

      卡爾曼濾波器?? 534

      擴(kuò)展卡爾曼濾波器簡(jiǎn)述?? 549

      小結(jié) 551

      練習(xí) 551

      第18章 相機(jī)模型與標(biāo)定??????? 553

      相機(jī)模型????????? 554

      射影幾何基礎(chǔ)?? 556

      Rodrigues變換?? 558

      透鏡畸變?????? 559

      標(biāo)定 562

      旋轉(zhuǎn)矩陣和平移向量??? 563

      標(biāo)定板???????? 566

      單應(yīng)性???????? 572

      相機(jī)標(biāo)定?????? 576

      矯正 587

      矯正映射?????? 587

      使用cv::convertMaps()在不同表示方式之間轉(zhuǎn)換矯正映射???? 588

      使用cv::initUndistortRectifyMap()計(jì)算矯正映射????? 589

      使用cv::remap()矯正圖像?????????? 591

      使用cv::undistort()進(jìn)行矯正??????? 591

      使用cv::undistortPoints()進(jìn)行稀疏矯正 ???591

      與標(biāo)定結(jié)合???????? 592

      小結(jié) 595

      練習(xí) 596

      第19章 投影與三維視覺??????? 599

      投影 600

      仿射變換與透視變換??????? 601

      鳥瞰圖變換實(shí)例??????? 602

      三維姿態(tài)估計(jì)?????? 606

      單攝像機(jī)姿態(tài)估計(jì)????? 607

      立體成像????????? 609

      三角測(cè)量?????? 610

      對(duì)極幾何?????? 613

      本征矩陣和基本矩陣??? 615

      計(jì)算極線?????? 624

      立體校正?????? 624

      立體校正?????? 628

      立體匹配?????? 638

      立體校正、標(biāo)定和對(duì)應(yīng)的示例代碼?? 650

      來自三維重投影的深度映射??????? 657

      來自運(yùn)動(dòng)的結(jié)構(gòu)???? 659

      二維與三維直線擬合??????? 659

      小結(jié) 662

      練習(xí) 662

      第20章 機(jī)器學(xué)習(xí)基礎(chǔ)????????? 665

      什么是機(jī)器學(xué)習(xí)???? 665

      訓(xùn)練集和測(cè)試集??????? 666

      有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)????????? 667

      生成式模型和判別式模型????????? 669

      OpenCV機(jī)器學(xué)習(xí)算法?? 669

      機(jī)器學(xué)習(xí)在視覺中的應(yīng)用???? ?????671

      變量的重要性?? 673

      診斷機(jī)器學(xué)習(xí)中的問題?? 674

      ML庫中遺留的機(jī)器學(xué)習(xí)算法? 678

      K均值???????? 679

      馬氏距離?????? 684

      小結(jié) 687

      練習(xí) 687

      第21章 StatModel:OpenCV中的基準(zhǔn)學(xué)習(xí)模型?????? 689

      ML庫中的常見例程? 689

      訓(xùn)練方法和cv::ml::TrainData的結(jié)構(gòu)? 691

      預(yù)測(cè)????????? 697

      使用cv::StatModel的機(jī)器學(xué)習(xí)算法?????? 698

      樸素貝葉斯分類器????? 699

      二叉決策樹???? 703

      Boosting方法??? 716

      隨機(jī)森林?????? 721

      期望最大化算法??????? 725

      K近鄰算法?????? 729

      多層感知機(jī)???? 731

      支持向量機(jī)???? 739

      小結(jié) 749

      練習(xí) 750

      第22章 目標(biāo)檢測(cè)??? 753

      基于樹的目標(biāo)檢測(cè)技術(shù)????? 753

      級(jí)聯(lián)分類器???? 754

      有監(jiān)督學(xué)習(xí)和boosting理論???????? 756

      學(xué)習(xí)新目標(biāo)???? 764

      使用支持向量機(jī)的目標(biāo)識(shí)別?? 772

      Latent SVM用于目標(biāo)識(shí)別?? ???????772

      Bag of Words算法與語義分類?????? 775

      小結(jié) 780

      練習(xí) 780

      第23章 OpenCV的未來???????? 783

      過去與未來???????? 783

      OpenCV 3.x???? 784

      我們上一次預(yù)測(cè)怎么樣???? 784

      未來應(yīng)用????????? 785

      目前GSoC的進(jìn)展?????? 787

      社區(qū)貢獻(xiàn)?????? 788

      OpenCV.org???? 789

      一些關(guān)于AI的猜測(cè)?? 790

      結(jié)語 793

      附錄A 平面劃分???? 795

      附錄B opencv_contrib模塊概述???????? 809

      附錄C 標(biāo)定圖案???? 813

      參考文獻(xiàn)????? 819

      機(jī)器視覺 OpenCV

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:ERP和CRM軟件-這些解決方案有何不同,您的組織需要哪一種?
      下一篇:excel閱讀模式找不到怎么辦
      相關(guān)文章
      亚洲精品国产日韩无码AV永久免费网| 久久精品国产亚洲av瑜伽| 久久久久久亚洲av无码蜜芽| 亚洲国产韩国一区二区| 亚洲欧洲日产专区| 亚洲成人在线免费观看| 亚洲老熟女@TubeumTV| 亚洲精品视频免费看| 亚洲欧洲精品视频在线观看| 亚洲精品国产情侣av在线| 亚洲精品视频在线播放| 亚洲男人电影天堂| 亚洲成人福利网站| 亚洲最大的黄色网| 亚洲午夜成人精品无码色欲| 亚洲成a人片在线不卡一二三区| 亚洲精品天堂成人片AV在线播放| 亚洲sm另类一区二区三区| 九月婷婷亚洲综合在线| 亚洲精品专区在线观看| 久久亚洲色一区二区三区| 亚洲日本乱码在线观看| 亚洲国产天堂久久综合网站| 91在线亚洲精品专区| 亚洲伊人色一综合网| 最新国产精品亚洲| 亚洲av色香蕉一区二区三区| 亚洲A丁香五香天堂网| 亚洲一区二区三区影院 | 久久91亚洲精品中文字幕| 亚洲gv白嫩小受在线观看| 亚洲国产一区二区a毛片| 亚洲乱码一区av春药高潮| 亚洲AV日韩综合一区尤物| 国产尤物在线视精品在亚洲| 亚洲一级特黄大片在线观看| 国产亚洲高清不卡在线观看| 内射少妇36P亚洲区| 亚洲人成网站看在线播放| 亚洲av无码兔费综合| 久久久久亚洲精品无码网址 |