官术网_书友最值得收藏!

前言

北宋大家張載的“橫渠四句”非常有名,“為天地立心,為生民立命,為往圣繼絕學,為萬世開太平”,歷史上很多名人以之作為安身立命追求事業的勉勵語。第一次讀這句名言時,我非常激動,現在也時常想起,雖無法實現卻也心向往之。

有幸與電子工業出版社再次合作,個人能力淺薄,不敢妄談“為往圣繼絕學”,但也希望自己的書有一些實用價值,能在技術傳播中貢獻一份綿薄之力。在寫作前,劉偉老師(本書編輯)和我反復推敲寫作的目的是什么,這本書與別的圖書有什么不同,能給讀者帶來什么幫助等命題。我們圍繞上述命題提出了如下4個問題:為什么要學習圖像處理?為什么要選用OpenCV?為什么要用OpenCV 4?這本書與別的圖書有什么不同?

下面就通過對這4個問題的回答來介紹一下本書,讓讀者能夠對本書的寫作目的、寫作思路,以及如何參考本書進行OpenCV的學習有一個初步的理解。

為什么要學習圖像處理?

圖像處理之所以重要,是因為人類對認知世界的需要。

我們都知道,當前智能手機的普及率非常高,當看到美景或有事情發生時,幾乎所有人都會拿起手機拍照或錄制視頻,并將它們分享在各大平臺。愛美之心,人皆有之,因此,相機軟件也集成了越來越多的功能,如美顏、濾鏡等,其中很多功能都是在照片采集后通過圖像處理技術實現的。

各大手機廠商不遺余力地升級拍照或攝像功能,為了讓用戶能存儲更多的照片和視頻而不斷提升手機的存儲空間,這些都證明了用戶對圖像和視頻的需求非常強烈,從側面也反映了圖像處理技術的廣闊市場前景。

為什么要選用OpenCV?

OpenCV之所以大行其道,是因為其簡單易用。

作為一個開源的計算機視覺庫,OpenCV由C++語言編寫,讀者可以通過閱讀源碼對算法的實現細節進行學習,可讀性好。另外,OpenCV還實現了很多圖像處理和計算機視覺中的通用算法,在Linux、Windows、Android和macOS等操作系統上均可運行,即一套代碼能在多種系統中運行,通用性好。

OpenCV支持C++、Python、Java等語言和MATLAB等多種程序接口,在最新版本中還提供了對C#、Ch、Ruby、Go語言的支持,不同語言中的接口名稱和參數差異較小,用戶在不同的開發環境中只需改寫少量代碼即可使用,一致性好。

OpenCV在圖像處理領域深耕多年,不僅對算法做了很多優化,還針對實用場景做了加速處理,如支持對CUDA等硬件的加速。另外,它還可以通過引入Intel的IPP高性能多媒體函數庫獲得更高的運行處理速度,高效性好。

OpenCV大受歡迎還有一個重要的原因,就是當前深度學習和計算機視覺的飛速發展。在計算機視覺中進行模型訓練和使用時,需要對輸入圖像做很多預處理和后處理,這些都需要用到OpenCV庫。OpenCV中很多算法的實現可以彌補深度學習模型推理耗時的缺陷,在某些特定場景下,OpenCV中的傳統算法可以獲得與深度學習方法相差不大的結果,但在執行速度上遠勝于深度學習方法,應用性好。

為什么要用OpenCV 4?

不管什么軟件,新版本的出現基本上都是因為對舊版本的代碼做了很大力度的重構或增加了很多新特性,已經無法與舊版本兼容。

OpenCV 4版本升級中廢棄了一些舊的API,對一些枚舉類型的名稱寫法做了修改,對一些函數的參數做了調整,還有一個比較重要的變化就是增加了對dnn模塊的支持。如果讀者目前使用的是OpenCV 3,那么也不必對這些變化有過多的焦慮,因為OpenCV的錯誤提示清晰易懂,錯誤定位與修改均比較快速、簡單。

此外,建議讀者在學習一門新技術時,最好選用較新的軟件版本,因為很多軟件在發展過程中會逐漸停止對舊版本的支持。

這本書與別的圖書有什么不同?

OpenCV對圖像處理和計算機視覺算法做了系統封裝,這些算法被劃分為很多模塊,其中最重要的就是core模塊(第3章)和imgproc模塊(第4章和第5章),而很多同類圖書的內容就是圍繞這兩個模塊展開的,但是本書內容沒有局限于此。

本書以OpenCV模塊來分章節作為寫作思路,在每章的開始都有對模塊的導讀,導讀內容依托OpenCV源碼,講述了本模塊封裝的算法函數,對其中的函數和數據結構做了清晰明了的注釋,因此,導讀內容既可以為讀者學習算法提供幫助,又可以為讀者開發查詢提供參考。

本書在第1章講述了C++開發語言和Python開發語言,以及Windows和Linux系統中的OpenCV開發環境的搭建,只要讀者按照案例中的操作步驟執行,就能夠順利地運行OpenCV庫,不必為開發環境搭建中的各種問題焦頭爛額。

core模塊和imgproc模塊的重要性毋庸置疑,本書也針對這兩個模塊總結了很多案例,對這兩個模塊的算法做了透徹的講解。但對于其他模塊,如可視化模塊highgui、視頻處理模塊videoio、視頻分析模塊video、照片處理模塊photo、2D特征模塊features2d、相機標定與三維重建模塊calib3d、傳統目標檢測模塊objdetect、機器學習模塊ml、深度學習模塊dnn,在其他圖書中鮮有涉及,而本書對這些模塊都做了詳細導讀和案例講解。

這種系統化的講解能夠讓讀者對OpenCV有一個全面的認識,也能夠讓讀者有機會了解OpenCV的強大功能,為讀者在處理特殊需求時提供知識儲備。

最后,感謝家人、朋友和出版社對本書寫作的支持。希望本書能夠給對OpenCV和圖像處理有需求的讀者以幫助,對于書中的疏漏之處,請不吝指教。如果有深度學習和計算機視覺學習需求的讀者,敬請關注我的另一本圖書《深度學習計算機視覺實戰》,該書對深度學習和計算機視覺算法的基礎、圖像處理基礎、計算機視覺案例、TensorFlow Lite,以及基于TensorFlow Lite在移動端和PC端的部署做了一站式的講解,在此對您的支持表示衷心的感謝。

肖鈴

2021年10月

主站蜘蛛池模板: 金堂县| 左云县| 洛浦县| 沈丘县| 新和县| 梅河口市| 蒙阴县| 思南县| 泸定县| 长治县| 阿勒泰市| 奉节县| 任丘市| 磴口县| 包头市| 舟曲县| 鸡泽县| 兴安盟| 井陉县| 大冶市| 维西| 乐至县| 洞口县| 吴旗县| 会理县| 南川市| 康马县| 鄂伦春自治旗| 桂林市| 霸州市| 定结县| 古蔺县| 邹城市| 桐柏县| 黄梅县| 瑞安市| 绥江县| 韶关市| 松溪县| 慈溪市| 原平市|