本文使用的开发板是sipeed的MaixDock
这个是官方文档(其实官方文档写的蛮清楚的!)
官方文档地址
首先我们先确保有ch340的驱动,随后在官方文档中下载固件,这个固件的网址是github的所有这里贴出百度网盘的链接(1.8.1版本)
百度网盘
提取码:5k39
下载一下固件,固件不是git上的,国内网可以直接访问。
固件下载地址
直接找最下面的这个就可以了。
注意这个是没有lvgl的,下载lvgl可以写界面
这里也贴出百度网盘链接
百度网盘链接
提取码:u34c
随后打开软件把刚刚下载的.bin的文件放在里面就可以了
先把设备连接上再打开软件,随后点击下载,下载完成以后会出现这个界面,就说明固件已经完成了烧录
我们下载Maixpy ide
这个网站可以下载
ide官网下载地址
速度还是可以的,下载这个安装包就可以了,下面的那个是不安装可以直接打开的版本(推荐安装包吧)
百度网盘链接
提取码:a65b
点开文件进行安装即可
打开软件点击工具选择开发板就行
接着我们点击连接再点击运行板子就会自动开始运行了
若是想板子一上电就能开启这个程序就点击“将脚本保存到开发板就可以了
ok环境的搭建就到这里,官方的例程在git上
官方例程
这里简单介绍两个
这一段是颜色识别的代码,这个例程是寻找绿色的块
import sensor
import image
import lcd
import time
lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
green_threshold = (0, 80, -70, -10, -0, 30)
while True:
img=sensor.snapshot()
blobs = img.find_blobs([green_threshold])
if blobs:
for b in blobs:
tmp=img.draw_rectangle(b[0:4])
tmp=img.draw_cross(b[5], b[6])
c=img.get_pixel(b[5], b[6])
lcd.display(img)
人脸识别是需要刷入人脸识别的固件的
人脸识别固件地址
这个是人脸识别的固件,需要用kflash_gui把固件烧录进去
这是用的是0x600000的地址,还有一个0x300000的地址,这个一定要注意。
等他下载完成以后我们打开ide在ide中放入官方例程
import sensor, image, lcd, time
import KPU as kpu
import gc, sys
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=(224,224))
img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
lcd.display(img)
def main(model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
try:
sensor.reset()
except Exception as e:
raise Exception("sensor reset fail, please check hardware connection, or hardware damaged! err: {}".format(e))
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(sensor_hmirror)
sensor.set_vflip(sensor_vflip)
sensor.run(1)
lcd.init(type=1)
lcd.rotation(lcd_rotation)
lcd.clear(lcd.WHITE)
anchors = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
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:
img.draw_rectangle(obj.rect())
img.draw_string(0, 200, "t:%dms" %(t), scale=2)
lcd.display(img)
except Exception as e:
raise e
finally:
if not task is None:
kpu.deinit(task)
if __name__ == "__main__":
try:
main( model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False)
# main(model_addr="/sd/m.kmodel")
except Exception as e:
sys.print_exception(e)
lcd_show_except(e)
finally:
gc.collect()