• 星瞳AI VISION软件内测!可以离线标注,训练,并生成OpenMV的模型。可以替代edge impulse https://forum.singtown.com/topic/8206
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 串口通信有问题,openmv端能正确输出,可以32出错



    • 0_1658808113716_4157A5A4FB77554FFA79047D1607809A.jpg

      import sensor, image, time, os, tf, math, uos, gc
      import json,pyb
      from pyb import UART,LED
      green_threshold  = (0, 58, -49, -19, 39, -17)
      red_thresholds  = (0, 100, 7, 127, -128, 127)
      led3=pyb.LED(3)
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.set_windowing((240, 240))
      sensor.skip_frames(time = 2000)
      uart = UART(3,115200)
      uart.init(115200,bits = 8,parity = None,stop = 1)
      net = None
      labels = None
      min_confidence = 0.5
      try:
          net = tf.load("trained.tflite", load_to_fb=uos.stat('trained.tflite')[6] > (gc.mem_free() - (64*1024)))
      except Exception as e:
          raise Exception('Failed to load "trained.tflite", did you copy the .tflite and labels.txt file onto the mass-storage device? (' + str(e) + ')')
      try:
          labels = [line.rstrip('\n') for line in open("labels.txt")]
      except Exception as e:
          raise Exception('Failed to load "labels.txt", did you copy the .tflite and labels.txt file onto the mass-storage device? (' + str(e) + ')')
      colors = [
          (255,   0,   0),
          (  0, 255,   0),
          (255, 255,   0),
          (  0,   0, 255),
          (255,   0, 255),
          (  0, 255, 255),
          (255, 255, 255),
      ]
      clock = time.clock()
      U1=1
      while(True):
          clock.tick()
          img = sensor.snapshot()
          while(U1):
              clock.tick()
              img = sensor.snapshot()
              for i, detection_list in enumerate(net.detect(img, thresholds=[(math.ceil(min_confidence * 255), 255)])):
                  if (i == 0): continue
                  if (len(detection_list) == 0): continue
                  print("********** %s **********" % labels[i])
                  for d in detection_list:
                      [x, y, w, h] = d.rect()
                      center_x = math.floor(x + (w / 2))
                      center_y = math.floor(y + (h / 2))
                      print('x %d\ty %d' % (center_x, center_y))
                      #zuo[0]=math.floor(x + (w / 2))
                      #zuo[1]=math.floor(y + (h / 2))
                      print(labels[i])
                      uart.write(labels[i])
                      led3.on()
                      u1=0
              print(clock.fps(), "fps", end="\n\n")
      

      上面是openmv的函数,下面是32

      void Openmv_Receive_Data(int16_t data)
      {
      //	static u8 state = 0;
      	openmv2=data;  //定义一个变量接收openmv发送的数据
      }
      OLED_ShowNum(70,20,openmv2,3,12);
      

      openmv的串行终端上可以正确打印,但是32上不行



    • 我运行代码没有复现出你的图片里的错误。