手写数字识别(图像,视频,实时摄像头)MNIST DATASET(手把手教程):Jupyter+Tensorflow
本实验要用到 Anaconda+Jupyter+Tensorflow没有环境的看这:链接: Anaconda+Jupyter+Opencv+tensorflow安装.有任何问题评论回复。
打开Jupyter:
注意:因为我们要做图像处理,我希望你需要处理的图像、视频和程序保存在同一位置。
比如:
我们不需要下载数据集,因为MNIST数据集在tensorflow里,我们只需要用Kares加载就可以了。
实验用了三层卷积和三层全连接。具体原理很多文章讲到,这里就直接上代码了:
代码有详细注释:
首先加载"MNIST Dataset" :
训练和测试数据集:
正则化之前检查每个像素的值:
确定是灰度图后,正则化。正则化就是将0-255的数据转化到0-1之间。
检查标签
重置置图像大小,使它适合做卷积
创建一个深度神经网络
结果:
训练模型:
在测试集上预测
结果:
现在我手写一个,用来测试:
加载图片:
重设输入图像参数:
预测结果:
识别视频里的手写数字:
import numpy as np
font_scale=1.5 #字体大小
font=cv2.FONT_HERSHEY_PLAIN#字体类型
cap=cv2.VideoCapture('2021-04-04_182439.mp4')
if not cap.isOpened():
cap=cv2.VideoCapture(0)
if not cap.isOpened():
raise IOError('Can not open video')
text='Some text in a box!'
#获得box的长和宽
(text_width,text_height)=cv2.getTextSize(text,font,fontScale=font_scale,thickness=1)[