前言
目前,計算機視覺技術的應用越來越廣泛。伴隨著硬件設備的不斷升級,構造復雜的計算機視覺應用變得越來越容易了。有非常多的軟件工具和庫可以用來構造計算機視覺應用,而面向Python的OpenCV(OpenCV for Python)就是一個很好的選擇,本書正是基於面向Python的OpenCV來講解的。
本書的主要內容和特點
OpenCV本身是一個“黑盒”,它為我們提供了接口(參數、返回值)。我們隻需要掌握接口的正確使用方法,就可以在完全不了解其內部工作原理(算法)的情況下,方便地進行各種復雜的圖像處理。在這一點上,它和Photoshop等工具是相似的,隻要掌握了正確的使用方法,就能夠得到正確的處理結果。它們都嘗試讓我們專注於圖像處理本身,而不用去考慮算法實現的細節。
在學習Photoshop時,我們學習的是如何使用它的功能,而不需要繫統地學習每個功能所采用的算法原理。但是很明顯,我們在使用OpenCV進行圖像處理時,是不能完全忽略算法實現的,否則是不可能用好OpenCV的,更不能設計出好的計算機視覺應用繫統。
從上述角度講,我們可以從兩個角度學習OpenCV:
? 將OpenCV作為“白盒”學習:深入學習OpenCV每個函數所使用算法的基本原理、每個函數的具體實現細節,進一步加深對圖像處理的理解。
? 將OpenCV作為“黑盒”學習:僅僅將OpenCV作為一個工具來使用,學習的是每個函數內參數的含義和使用方式,學習的目的是更好地使用OpenCV函數。
本書盡量幫助讀者在“黑盒”學習和“白盒”學習之間取得平衡。在介紹具體的算法原理時,盡量使用通俗易懂的語言和貼近生活的示例來說明問題,避免使用過多復雜抽像的公式。希望這樣的安排能夠幫助讀者更好地掌握計算機視覺的相關知識,更透徹地理解計算機視覺的相關算法。在介紹OpenCV函數的使用方法時,我們為讀者提供了大量的程序示例。而且在介紹函數對圖像的處理前,往往先展示函數對數值、數組的處理,方便讀者從數值的角度觀察和理解函數的處理過程和結果。希望這些例題能夠幫助讀者更好地理解OpenCV處理圖像的方式,快速地掌握OpenCV的使用方法,更好地使用OpenCV進行圖像處理。需要說明的一點是,本書為黑白印刷,無法很好地呈現某些程序的運行效果,請讀者自行運行程序並觀察結果。
在內容的設置上,本書以OpenCV官方文檔的知識脈絡為主線,在此基礎上對細節進行補充和說明。
為了方便讀者學習,本書力求將每一個知識點作為一個獨立的點來介紹和說明。在介紹知識點時,盡量采用從零開始的方式,以避免讀者在學習過程中需要不斷地離開當前知識點,去查閱相關背景資料。但是由於篇幅有限,如果某一函數已經在前面介紹過,在後面用到該函數時,就沒有對其進行重復介紹,而是給出介紹該函數語法的章節位置,方便讀者參考閱讀。
本書適合計算機視覺領域的初學者閱讀,包括在校學生、教師、專業技術人員、圖像處理愛好者。
感謝
首先,我要感謝我的老師高鐵杠教授,感謝高老師帶我走進了計算機視覺這一領域,讓我對計算機視覺產生了濃厚的興趣,更要感謝高老師一直以來對我的關心和幫助。
感謝本書的策劃編輯符隆美老師,符老師的專業精神給我留下了非常深刻的印像。感謝本書的責任編輯王中英和許艷老師,她們對本書內容做出了細致修改,不僅修改了很多不通順的語句和錯別字,還對書中存在的技術問題進行了確認和修正。還要感謝為本書出版而付出辛苦工作的電子工業出版社的其他老師們。
感謝OpenCV開源庫的所有貢獻者。
感謝合作單位天津撥雲咨詢服務有限公司為本書提供的支持。
感謝我的家人,感謝你們一直以來對我的理解、支持和付出。
互動方式
限於本人水平,書中肯定存在很多不足之處,歡迎大家提出問題和建議,也非常歡迎大家和我交流關於OpenCV的各種問題,我的郵箱是lilizong@gmail.com。
李立宗
2019年3月