• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 修改了缩进之后错误没有解决,是有其他的语法问题吗?



    • 0_1690164232400_6eee93d2-d42b-4706-9ac9-af791cae55e7-image.png

      import sensor, image, time, os, tf, math, uos, gc
      from pyb import UART,LED
      import json
      import ustruct
      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
      init_num=None
      
      def sending_data(cx,cy,cw,ch):
         global uart;
         data = bytearray([0x2C,4,cx,cy,0x5B])
         uart.write(data);
      def recive_data():
         global uart
         if uart.any():
      	   tmp_data = uart.readchar();
      	   print(tmp_data)
      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()
      while(True):
      	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))
      
                  # If the detected number is between 1 and 8, send the corresponding character 'A'-'H'.
                  if 1 <= i <= 8:
                      uart.write(chr(ord('A') + i - 1))
      
                  # If the detected number is the same as the initial number
                  if i == init_num:
                      # If the number is on the left half of the image, send 'L'.
                      if center_x < img.width() / 2:
                          uart.write('L')
                      # If the number is on the right half of the image, send 'R'.
                      elif center_x > img.width() / 2:
                          uart.write('R')
      
      
      			"""if center_x < img.width() / 2:
      				print('Object is on the left')
      			else:
      				print('Object is on the right')
      			print('x %d\ty %d' % (center_x, center_y))"""
      			img.draw_circle((center_x, center_y, 12), color=colors[i], thickness=2)
      	print(clock.fps(), "fps", end="\n\n")
      


    • 把所有的tab缩进改为4个空格缩进。