數字辨識 (raspberrypi + opencv)
TRANSCRIPT
投影片用到的code
• http://ppt.cc/jxQMg
• http://ppt.cc/ig4mL
數字辨識
• 數字辨識其實不難
• 他背後的概念是這樣子的
• 圖片來源 http://img.technews.tw/wp-content/uploads/2016/02/shutterstock_360063380.jpg
• 圖片來源 https://static1.squarespace.com/static/52b1f7fde4b0cf42302dca8f/t/55de2e37e4b0f379c277f311/1440624193979/
數字辨識 概念
• 首先,我們蒐集各種不同類型的數字1
• 然後把這些照片存在一個陣列裡面
• 並且把這個陣列貼上“這是數字1”的標籤
• 這樣程式比對後得到相近的結果
• 再去取對應陣列上面標的是甚麼標籤
• 程式就會知道辨識的目標是甚麼東西了!
• 但是在辨識之前
• 我們要先做好一個知識庫
• 這樣辨識的程式才有依據可以比對呀~
• 註:以下程式碼與說明僅供參考。
如有錯誤疏失,歡迎交流指教 =]
建立訓練庫(1/4)
• 建立訓練庫首要的工作
• 就是引進作為我們比對資料的範本啦~
• 首先讀進單引號裡的檔案(如圖為.png)
• 並分別給img1~4的變數名稱
建立訓練庫(2/4)
• 設立一個預先處理圖片的副程式
• 建立訓練庫有個規定的固定大小
• 之後呼叫副程式來處理每一張圖片
建立訓練庫(3/4)
• 這個步驟呢
• 就是讓零散的圖變成方便我們管理的陣列
• 另外其他莫名其妙的轉換呢
• 為的是要符合建立訓練庫的規範
建立訓練庫(4/4)
• 經過一連串複雜的設定後
• 目的是為了產出我們以後要用的訓練庫
• 也就是一個可讓程式做比對的百科全書嚕~
• 這邊37行,是讓圖的陣列與標籤作結合
• 產出的訓練庫如截圖將是“knn_data.npz”
其實這個辨識程式的背後有個巨大的陰謀 (?
所謂KNN演算法
• 離散資料中
• 具某特徵的資料易有固定分布
• 今天有一筆新的資料進來
• 我們找距離他最近的幾筆資料
• 來決定這筆資料是屬於哪一國的
• 張智星老師:第13講 K-Nearest Neighbor Classifiers (2:38~6:00)
• https://www.youtube.com/watch?v=ARuFG4SjM-g
• 圖片來源 http://bdewilde.github.io/assets/images/2012-10-26-knn-concept.png
介紹幾個基本的openCV函式
• 讀圖片檔案我們用cv2.imread()
• 模糊圖片我們用cv2.medianBlur()
• 將圖片二值化我們用cv2.threshold()
• 擷取圖片的某部分我們用cv2.resize()
• openCV官網收錄全部相關的解釋文件
• openCV2與openCV3的函式名稱有變動
最後
• 如果你想要深入學習這個領域的話
• 請認明 “計算機圖學”