本實驗代碼已上傳面包多,請點擊購買,或者關注[全都是碼農]公眾號,回復[最近鄰],限時免費獲取!
實驗概述
本實驗皆在運用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. 統計每個數字正確識別率,并對錯誤識別的情況進行深入分析,
軟體設計
一、體系設計圖

函式清單
| 函式名 | 函式功能簡述 | 函式介面簡述 |
|---|---|---|
| ImgToNp() | 將圖片的路徑匯入到矩陣中, | 輸入:無 輸出:圖片路徑矩陣 |
| outFeature() | 處理特征函式并貼標簽, | 輸入:圖片路徑矩陣 輸出:訓練圖片矩陣集與標簽集 |
| star() | 程式按照預設好的結構進行回圈測驗與輸出, | 輸入:訓練圖片矩陣集與標簽集 輸出:訓練結果 |
| TestImgToNp() | 輸入測驗圖片,并轉化為矩陣, | 輸入:測驗圖片地址, 輸出:測驗圖片矩陣, |
| outfeatureImg() | 輸出特征圖與特征值, | 輸入:訓練圖片矩陣集 輸出:保存特征圖與特征值為檔案,\ |
代碼介紹
(一)Mainapp.py代碼
mainapp.py為主程式,表1函式清單中的函式均包含于其中,
運行程式后,程式先行運用ImgToNp()函式將img檔案夾中0-9檔案夾里的80個樣本圖片轉化為矩陣保存于變數中并將其回傳,




四、實驗結果
運行mainapp.py后,輸出框如下所示:
\1. 圖片地址以匯入矩陣......
\2. 準備提取特征......
\3. 特征以存盤于feature矩陣......
\4. 準備貼標簽......
\5. 標簽以貼完......
\6. 是否輸出特征圖與特征值?y/n:
輸入y時,程式將輸出80張樣本的特征值與特征圖,分別存盤于”./fandimg/{0-9}”,以及”./fandimg/featureArray/{0-9}”中,如下圖:


程式繼續運行,輸出框輸出:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/228775.html
標籤:其他
上一篇:RefineDet

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