• 【计算机视觉40例】案例15:KNN数字识别


    导读】本文是专栏《计算机视觉40例简介》的第15个案例《KNN数字识别》。该专栏简要介绍李立宗主编《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书的40个案例。

    目前,该书已经在电子工业出版社出版,大家可以在京东、淘宝、当当等平台购买。

    大家可以在公众号“计算机视觉之光”回复关键字【案例15】获取本文案例的源代码及使用的测试图片等资料。

    针对本书40个案例的每一个案例,分别录制了介绍视频。如果嫌看文字版麻烦,可以关注公众号“计算机视觉之光”直接观看视频介绍版。

    本文截取书中部分内容如下:

    我们的目标是构建一个使用KNN实现手写数字识别的应用程序。为此,我们需要一些训练数据和测试数据。OpenCV自带一幅包含5000个手写数字的图像digits.png。该图像中,每个手写数字有5行、100列、共计500个(5×100)。其中,每个手写数字的图像大小是20×20像素。如图16- 1所示,是从digits.png左上角截取的一部分。

    图1  图像digits.png部分

    将图像digits划分为训练集和测试集两部分,使用训练集训练KNN模型,使用测试集测试模型准确率。需要注意的,KNN模型对于数据集的格式有要求,所以我们需要将训练集和测试集处理为符合要求的形式。

    划分数据集是使用KNN模型前的预处理过程,具体步骤图2所示。其中:

    1. Step 1: 初始化。该步骤从磁盘读入图像文件、并将图像文件由彩色图像处理为灰度图像。
    2. Step 2: 拆分数字。该操作针对的是图像digits,将其中的每个数字拆分为一个个独立的图像,得到大小为20×20像素的单个数字图像。
    3. Step 3:拆分数据集。将所有的数据划分为两部分,一般为训练集、一半为测试集;具体来说,将每个数字在图像内左侧的250个样本作为训练集,右侧的250个样本作为测试集。
    4. Step 4: 塑形。将大小为20×20的图像重塑为1*400像素大小的形式;也就是说,将每个20x20大小的单个数字的图像展平为一行400个像素。值得注意的是,在这里我们直接使用了每个数字图像的像素值作为其特征值。
    5. Step 5: 贴标签。为每个手写数字贴上其对应的标签。该标签是其实际所对应的数字值。
    6. Step 6: KNN使用KNN模型完成识别。
    7. Step 7:验证。计算识别结果的准确率。

    图2 预处理

    在《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书中,从算法原理、实现流程等角度系统深入地介绍了该案例的理论基础和实现过程,并对具体的代码实现进行了细致的介绍与解释。欢迎大家阅读第16章《KNN字符识别》获取详细内容。

    《计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。

  • 相关阅读:
    CTFHub | Refer注入
    前端mockjs使用方式[express-mockjs]
    什么是mybatis,全是干货
    jdbc-升级 水果库存系统 BaseDao 添加 执行复杂查询方法
    手把手带你体验一场属于Linux的学习之旅
    MAP和MLE的区别(自用)
    优雅的用户体验:微信小程序中的多步骤表单引导
    JavaScript的同步和异步问题
    mysql8.0英文OCP考试第21-30题
    CPU设计——Triumphcore——V2版本
  • 原文地址:https://blog.csdn.net/superdont/article/details/126241104