zoukankan      html  css  js  c++  java
  • 基于最近邻法手写数字识别(内附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

  • 相关阅读:
    nginx解决跨域问题
    SSM整合相关试题
    SSM整合案例--用户登录
    非法用户登录拦截
    SpringMVC拦截器和数据校验
    SpringMVC文件上传
    SpringMVC异常处理
    SpringMVC方法的返回值类型和自动装配
    SpringMVC
    spring和mybatis整合
  • 原文地址:https://www.cnblogs.com/sabai/p/14054033.html
Copyright © 2011-2022 走看看