星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 如何用神经网络识别一串手写数字



    • 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())