閱讀《OpenCV計算機視覺程式設計攻略》是一種怎樣的體驗

葉糖糖發表於2017-09-10

嚴格意義上講,初次見到機器視覺的產品是在北京參加Connect 2016大會的時候。在主會場外有一些展臺,無意間我看到一個關於機器視覺的產品,當時只是記下了這個詞,也沒怎麼太在意。

真正引起我注意的是一個有趣的分享,分享的嘉賓來自“格靈深瞳”。記得當時分享的主題就是圍繞機器視覺展開的,印象比較深刻的一是神奇的攝像頭可以判定一輛車在馬上是否違章;二是在北京三環行駛的無人駕駛車。這些好玩的訊息讓自己更加越發的喜歡搗鼓和硬體相關的物件,也讓我對機器視覺產生了興趣。

很難得,在社群找到了一本《OpenCV計算機視覺程式設計攻略》。這本書使用的C++進行程式設計,非常適合對機器視覺感興趣的開發者用來學習。

一、閱讀的正確姿勢
  • 準備一臺不是很不靠譜的電腦(什麼系統不重要
  • 準備好無限的耐心(可能安裝開發環境的時候會遇到坑
  • 最好有一些C++基礎知識的儲備(這點對於閱讀本書很重要
  • 最好能理解中文(無聊
二、關於開發環境的安裝

因為自己使用的是win10系統的電腦,所以IDE選擇的是微軟的Visual Studio 2017OpenCV版本選擇的是3.3。當然,您可以按照自己的喜好,選擇合適的IDE和OpenCV的版本。

三、OpenCV是什麼?

OpenCV是一個開源的跨平臺的計算機視覺庫。可以執行在Linux、Windows和Mac OS作業系統上。提供支援多種語言的API(幾種常用的語言)。

四、技能回收站

全書共計11章節,去除第一章基礎介紹,實際重點章節有10章,大約280頁,內容也很簡單,所以閱讀起來基本上很順暢。不過書中還會涉及到一些涉及模式和演算法,先透露一些。

  • 策略模式 、控制器設計模式
  • 均值平移演算法、分水嶺演算法、MSER演算法、GrabCut演算法

初篇主要講解的都是一些基礎知識,比如:裝載、顯示和儲存影像;Mat的使用及定義興趣區域。這些是知識都是開啟OpenCV挑戰之前需要掌握的。

當大腦中有了一些基礎的概念之後,繼續學習操作畫素就變得有趣些。其實影像本質上就是一個由數值組成的矩陣,而矩陣中的每個元素表示一個畫素。在OpenCV中可以通過Mat操作影像。繞了一圈其實就是想說,第一章內容不能跳過(*^__^*) 嘻嘻。其次是說,本書知識結構層層遞進,內容銜接合理。

在操作畫素的章節裡有個關於“椒鹽噪聲”的Demo很好玩,就是隨機選擇一些畫素,把它們的顏色替換成白色或者黑色。在實驗的過程中,我選擇了將畫素顏色替換成了白色,最後的圖片上出現了類似雪花一樣的效果。如下圖:

椒鹽噪聲測試效果

效果二:

翻轉效果

效果三:

灰度效果

閱讀完操作畫素、用類處理彩色影像、用直方圖統計畫素、用形態學運算變換影像、影像濾波、提取直線、輪廓和區域、檢測興趣點、描述和匹配興趣點、估算影像之間的投影關係、處理視訊序列這些內容之後,覺得《OpenCV計算機視覺程式設計攻略》真的是一本有趣有料的書。在現實生活場景中應用到了很多書中講的知識。

就全書而言,這本書中涉及的程式碼篇幅倒不是很多。雖然是一本程式設計類的技術書籍,但是書每一行程式碼都是不可或缺的。書中梳理的概念和實現原理是全書的特色,一掃自己對圖形處理的盲區。美中不足的是目前就在社群發現了這麼一本書。

接下來想用樹莓派和OpenCV做點簡單的好玩的事情。

相關文章