python笔记手写_基于最近邻法手写数字识别(内附python源码)

本实验代码已上传面包多,请点击购买,或者关注[全都是码农]公众号,回复[最近邻],限时免费获取!python

实验概述

本实验皆在运用OpenCV、Python等工具采用适当的算法对手写体数字进行识别与检测,能够提供训练集与测试集进行训练,并能够输入手写字体进行测试检验。web

经过独立的完成本实验,能够极大地提升本人对于Python、OpenCV的理解,掌握手写数字的特征提取技术和最近邻模板匹配法。算法

环境说明

系统:window 10app

软件: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. 统计每一个数字正确识别率。并对错误识别的状况进行深刻分析。

软件设计

1、体系设计图

img

函数清单

函数名

函数功能简述

函数接口简述

ImgToNp()

将图片的路径导入到矩阵中。

输入:无 输出:图片路径矩阵

outFeature()

处理特征函数并贴标签。

输入:图片路径矩阵 输出:训练图片矩阵集与标签集

star()

程序按照预设好的结构进行循环测试与输出。

输入:训练图片矩阵集与标签集 输出:训练结果

TestImgToNp()

输入测试图片,并转化为矩阵。

输入:测试图片地址。 输出:测试图片矩阵。

outfeatureImg()

输出特征图与特征值。

输入:训练图片矩阵集 输出:保存特征图与特征值为文件。\

代码介绍

(一)Mainapp.py代码

mainapp.py为主程序,表1函数清单中的函数均包含于其中。

运行程序后,程序先行运用ImgToNp()函数将img文件夹中0-9文件夹里的80个样本图片转化为矩阵保存于变量中并将其返回。

image-20201128202625504

image-20201128202640461

image-20201128202720385

image-20201128202731144

4、实验结果

运行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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值