【计算机视觉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个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superdont

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值