如何用神经网络识别一串手写数字
-
Untitled - By: Administrator - 周三 十月 21 2020
"""
手写数字识别例程
分类模型:训练好的Lenet
数据集:MNIST
"""导入相应的库
import sensor, image, time, os, nn
初始化摄像头
sensor.reset()
设置相机图像的对比度
sensor.set_contrast(3)
设置采集到照片的格式:灰色图像
sensor.set_pixformat(sensor.GRAYSCALE)
设置采集到照片的大小:320*240
sensor.set_framesize(sensor.QVGA)
设置128*128窗口
sensor.set_windowing((128, 128))
设置延时等待摄像头配置完成
sensor.skip_frames(time = 2000)
关闭自动摄像头增益
sensor.set_auto_gain(False)
sensor.set_auto_exposure(False)加载Lenet网络模型
加载之前我们需要将官方的网络“lenet.network”拷贝到OpenMV-H7的内存中
net = nn.load('/lenet.network')
十个标签
labels = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
clock = time.clock()
while(True):
clock.tick()
# 拍摄图片并返回img
img = sensor.snapshot()# copy()表示创建一个图像副本储存在MicroPython堆中而不是帧缓冲区 # 二值化是为了方便处理,阈值可以自己设定 out = net.search(img.copy().binary([(50, 255)], invert=True)) max_id = out.value()#运行到此处面提示错误‘list’object has no attribute value # 将0-1之间的值扩大到百分制 score = int(max_id*100) # 70分以上算识别成功 if(score < 70): score_str = "??:??%" else: score_str = "%s:%d%% "%(labels[max_id], score) img.draw_rectangle(out.rect()) # 显示分类结果 img.draw_string(0, 0, score_str, color = (255, 0, 0)) print(clock.fps())