| 【导读】本文是专栏《计算机视觉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所示。其中:

图2 预处理
在《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书中,从算法原理、实现流程等角度系统深入地介绍了该案例的理论基础和实现过程,并对具体的代码实现进行了细致的介绍与解释。欢迎大家阅读第16章《KNN字符识别》获取详细内容。
《计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。
