本實驗皆在運用opencv、python等工具採用適當的演算法對手寫體數字進行識別與檢測,可以提供訓練集與測試集進行訓練,並可以輸入手寫字型進行測試檢驗。
通過獨立的完成本實驗,可以極大地提高本人對於python、opencv的理解,掌握手寫數字的特徵提取技術和最近鄰模板匹配法。
系統:window 10
軟體:pycharm community edition 2020.2.2 x64
語言:python 3.6
環境:cv2,numpy,matplotlib.pyplot,time
本資料集為100張,分別為數字0-9,每個數字10張,8張訓練集,2張測試集。如下:
圖 1 數字零
圖 2 數字一
圖 3 數字二
圖 4 數字三
訓練集:可以訓練模型引數,使模型擬合於正確的**函式。
測試集:通過訓練過的模型進行檢驗,評估最終模型泛化能力。
驗證集:用於調超引數,監控模型是否發生過擬合。
\1. 學習利用行列掃瞄的方法獲取手寫數字的上、下、左、右位置的子程式。
\2. 設計手寫數字的特徵提取演算法,並編寫對應特徵提取程式。
\3. 編寫基於最近鄰模板匹配的手寫數字識別程式。
記錄輸入數字0-9各10個,程式執行後相應的識別結果,並對結果進行深入分析。
\1. 記錄每個樣品的特徵提取效果圖。
\2. 記錄該樣品對應的歸一化後的特徵值。
\3. 統計每個數字正確識別率。並對錯誤識別的情況進行深入分析。
img函式名
函式功能簡述
函式介面簡述
imgtonp()
將的路徑匯入到矩陣中。
輸入:無 輸出:路徑矩陣
outfeature()
處理特徵函式並貼標籤。
輸入:路徑矩陣 輸出:訓練矩陣集與標籤集
star()
程式按照預設好的結構進行迴圈測試與輸出。
輸入:訓練矩陣集與標籤集 輸出:訓練結果
testimgtonp()
輸入測試,並轉化為矩陣。
輸入:測試位址。 輸出:測試矩陣。
outfeatureimg()
輸出特徵圖與特徵值。
輸入:訓練矩陣集 輸出:儲存特徵圖與特徵值為檔案。\
執行程式後,程式先行運用imgtonp()函式將img資料夾中0-9資料夾裡的80個樣本轉化為矩陣儲存於變數中並將其返回。
四、實驗結果
\1. 位址以匯入矩陣......
\2. 準備提取特徵......
\3. 特徵以儲存於feature矩陣......
\4. 準備貼標籤......
\5. 標籤以貼完......
\6. 是否輸出特徵圖與特徵值?y/n:
輸入y時,程式將輸出80張樣本的特徵值與特徵圖,分別儲存於」./fandimg/」,以及」./fandimg/featurearray/」中。如下圖:
程式繼續執行,輸出框輸出:
1. 3-9.bmp 這張圖判斷錯誤了,系統判斷為:1 最接近的三個結果為:[[3. 7. 1.]]但是正確結果為:3
2. 4-9.bmp 這張圖判斷錯誤了,系統判斷為:1 最接近的三個結果為:[[1. 1. 1.]]但是正確結果為:4
3. 5-10.bmp 這張圖判斷錯誤了,系統判斷為:1 最接近的三個結果為:[[5. 1. 1.]]但是正確結果為:5
4. 6-10.bmp 這張圖判斷錯誤了,系統判斷為:1 最接近的三個結果為:[[1. 1. 1.]]但是正確結果為:6
5. 7-9.bmp 這張圖判斷錯誤了,系統判斷為:1 最接近的三個結果為:[[1. 1. 1.]]但是正確結果為:7
6. 8-9.bmp 這張圖判斷錯誤了,系統判斷為:3 最接近的三個結果為:[[8. 9. 3.]]但是正確結果為:8
7. 8-10.bmp 這張圖判斷錯誤了,系統判斷為:9 最接近的三個結果為:[[8. 9. 9.]]但是正確結果為:8
8. 9-9.bmp 這張圖判斷錯誤了,系統判斷為:1 最接近的三個結果為:[[9. 7. 1.]]但是正確結果為:9
OpenCV手寫數字字元識別 基於k近鄰演算法
本程式主要參照 基於opencv的離線手寫字元識別技術 實現了,對於手寫阿拉伯數字的識別工作。識別工作分為三大步驟 預處理,特徵提取,分類識別。預處理過程主要找到影象的roi部分子影象並進行大小的歸一化處理,特徵提取將影象轉化為特徵向量,分類識別採用k 近鄰分類方法進行分類處理,最後根據分類結果完成...
基於KNN的手寫數字識別
from numpy import import operator import os def classify0 inx,dataset,labels,k 構造分類器 knn原理 datasetsize dataset.shape 0 diffmat tile inx,datasetsize,1 ...
基於MNIST的手寫數字識別
1 mnist 資料資料集獲取 方式一 使用 tf.contrib,learn 模組載入 mnist 資料集 棄用 如下 使用 tf.contrib.learn 模組載入 mnist 資料集 deprecated 棄用 import tensorflow as tf from tensorflow....