無SD卡版,K210與串口助手進(jìn)行串口通信

from machine import UART,Timer
from fpioa_manager import fm
import sensor, image, lcd, time
import KPU as kpu
import gc, sys
input_size = (224, 224)
labels = ['5', '6', '7', '8', '1', '2', '3', '4']
anchors = [1.88, 2.38, 1.31, 2.11, 1.69, 2.19, 1.59, 1.94, 1.53, 1.66]
#映射串口引腳
fm.register(6, fm.fpioa.UART1_RX, force=True)
fm.register(7, fm.fpioa.UART1_TX, force=True)
#初始化串口
uart = UART(UART.UART1, 9600, read_buf_len=4096)
def lcd_show_except(e):
? ? import uio
? ? err_str = uio.StringIO()
? ? sys.print_exception(e, err_str)
? ? err_str = err_str.getvalue()
? ? img = image.Image(size=input_size)
? ? img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
? ? lcd.display(img)
def main(anchors, labels = None, model_addr=0x300000, sensor_window=input_size, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
? ? sensor.reset()
? ? sensor.set_pixformat(sensor.RGB565)
? ? sensor.set_framesize(sensor.QVGA)
? ? sensor.set_windowing(sensor_window)
? ? sensor.set_hmirror(sensor_hmirror)
? ? sensor.set_vflip(sensor_vflip)
? ? sensor.run(1)
? ? sensor.set_vflip(1)? ?#設(shè)置攝像頭翻轉(zhuǎn)
? ? lcd.init(type=1)
? ? lcd.rotation(lcd_rotation)
? ? lcd.clear(lcd.WHITE)
? ? if not labels:
? ? ? ? with open('labels.txt','r') as f:
? ? ? ? ? ? exec(f.read())
? ? if not labels:
? ? ? ? print("no labels.txt")
? ? ? ? img = image.Image(size=(320, 240))
? ? ? ? img.draw_string(90, 110, "no labels.txt", color=(255, 0, 0), scale=2)
? ? ? ? lcd.display(img)
? ? ? ? return 1
? ? try:
? ? ? ? img = image.Image("startup.jpg")
? ? ? ? lcd.display(img)
? ? except Exception:
? ? ? ? img = image.Image(size=(320, 240))
? ? ? ? img.draw_string(90, 110, "loading model...", color=(255, 255, 255), scale=2)
? ? ? ? lcd.display(img)
? ? try:
? ? ? ? task = None
? ? ? ? task = kpu.load(model_addr)
? ? ? ? kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # threshold:[0,1], nms_value: [0, 1]
? ? ? ? while(True):
? ? ? ? ? ? img = sensor.snapshot()
? ? ? ? ? ? t = time.ticks_ms()
? ? ? ? ? ? objects = kpu.run_yolo2(task, img)
? ? ? ? ? ? t = time.ticks_ms() - t
? ? ? ? ? ? if objects:
? ? ? ? ? ? ? ? for obj in objects:
? ? ? ? ? ? ? ? ? ? pos = obj.rect()
? ? ? ? ? ? ? ? ? ? img.draw_rectangle(pos)
? ? ? ? ? ? ? ? ? ? OutNum=labels[obj.classid()]
? ? ? ? ? ? ? ? ? ? img.draw_string(pos[0], pos[1], "%s : %.2f" %(labels[obj.classid()], obj.value()), scale=2, color=(255, 0, 0))
? ? ? ? ? ? ? ? ? ? print(OutNum)
? ? ? ? ? ? ? ? ? ? uart.write(OutNum)
? ? ? ? ? ? img.draw_string(0, 200, "t:%dms" %(t), scale=2, color=(255, 0, 0))
? ? ? ? ? ? lcd.display(img)
? ? except Exception as e:
? ? ? ? raise e
? ? finally:
? ? ? ? if not task is None:
? ? ? ? ? ? kpu.deinit(task)
if __name__ == "__main__":
? ? try:
? ? ? ? main(anchors = anchors, labels=labels, model_addr=0x300000, lcd_rotation=0)
? ? ? ? # main(anchors = anchors, labels=labels, model_addr="\sd\model-11975.nncase")
? ? except Exception as e:
? ? ? ? sys.print_exception(e)
? ? ? ? lcd_show_except(e)
? ? finally:
? ? ? ? gc.collect()