基於最近鄰法手寫數字識別(內附python源碼)


本實驗代碼已上傳面包多,請點擊購買,或者關注[全都是碼農]公眾號,回復[最近鄰],限時免費獲取!

實驗概述

本實驗皆在運用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張測試集。如下:

0-1 圖 1 數字零 1-1 圖 2 數字一
2-1 圖 3 數字二 3-1 圖 4 數字三

術語定義

訓練集:可以訓練模型參數,使模型擬合於正確的預測函數。

測試集:通過訓練過的模型進行檢驗,評估最終模型泛化能力。

驗證集:用於調超參數,監控模型是否發生過擬合。

需求說明

實驗內容

\1. 學習利用行列掃描的方法獲取手寫數字的上、下、左、右位置的子程序。

\2. 設計手寫數字的特征提取算法,並編寫對應特征提取程序。

\3. 編寫基於最近鄰模板匹配的手寫數字識別程序。

實驗結果與分析

記錄輸入數字0-9各10個,程序運行后相應的識別結果,並對結果進行深入分析。

\1. 記錄每個樣品的特征提取效果圖。

\2. 記錄該樣品對應的歸一化后的特征值。

\3. 統計每個數字正確識別率。並對錯誤識別的情況進行深入分析。

軟件設計

一、體系設計圖

img
img

函數清單

函數名 函數功能簡述 函數接口簡述
ImgToNp() 將圖片的路徑導入到矩陣中。 輸入:無 輸出:圖片路徑矩陣
outFeature() 處理特征函數並貼標簽。 輸入:圖片路徑矩陣 輸出:訓練圖片矩陣集與標簽集
star() 程序按照預設好的結構進行循環測試與輸出。 輸入:訓練圖片矩陣集與標簽集 輸出:訓練結果
TestImgToNp() 輸入測試圖片,並轉化為矩陣。 輸入:測試圖片地址。 輸出:測試圖片矩陣。
outfeatureImg() 輸出特征圖與特征值。 輸入:訓練圖片矩陣集 輸出:保存特征圖與特征值為文件。\

代碼介紹

(一)Mainapp.py代碼

mainapp.py為主程序,表1函數清單中的函數均包含於其中。

運行程序后,程序先行運用ImgToNp()函數將img文件夾中0-9文件夾里的80個樣本圖片轉化為矩陣保存於變量中並將其返回。

image-20201128202625504
image-20201128202625504
image-20201128202640461
image-20201128202640461
image-20201128202720385
image-20201128202720385
image-20201128202731144
image-20201128202731144

四、實驗結果

運行mainapp.py后,輸出框如下所示:

\1.   圖片地址以導入矩陣...... 

\2.   准備提取特征...... 

\3.   特征以存儲於feature矩陣...... 

\4.   准備貼標簽...... 

\5.   標簽以貼完...... 

\6.   是否輸出特征圖與特征值?y/n: 

輸入y時,程序將輸出80張樣本的特征值與特征圖,分別存儲於”./fandimg/{0-9}”,以及”./fandimg/featureArray/{0-9}”中。如下圖:

4imgimg

程序繼續運行,輸出框輸出:
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  


f


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM