smartcamera
── AI Camera 应用层驱动库¶
smartcamera
模块提供AI Camera模块的摄像头、显示屏、KPU运算、补光灯、按键等应用驱动。
SmartCamera¶
-
class
smartcamera.
SmartCamera
(rx=Pin.P13, tx=Pin.P14)¶
构建AI Camera应用实例, rx
、 tx
参数为定义串口通讯引脚。
smartcamera.
light
¶
k210.Light
的实例,用于控制补光灯亮灭。有关更多类的方法,请查阅该类详情。
k210.Button
的实例,检测按键状态。有关更多类的方法,请查阅该类详情。
smartcamera.
image
¶
k210.Image
的实例, Image 尺寸为AI Camera的LCD屏的尺寸大小(240*135)。有关更多类的方法,请查阅该类详情。
smartcamera.
sensor
¶
k210.Sensor
的实例,用于摄像头的操作。有关更多类的方法,请查阅该类详情。
smartcamera.
lcd
¶
k210.LCD
的实例,用于LCD屏的操作。有关更多类的方法,请查阅该类详情。
smartcamera.
kpu
¶
k210.KPU
的实例,用于AI模型运行的相关。有关更多类的方法,请查阅该类详情。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from mpython import *
import smartcamera
import time
import music
ai_camera = smartcamera.SmartCamera(Pin.P13, Pin.P14)
while True:
img = ai_camera.sensor.snapshot()
ai_camera.lcd.display(img)
if ai_camera.button.was_pressed():
localtime = time.localtime()
img_name = "img_{:2d}_{:2d}_{:2d}.jpg" .format(
localtime[3], localtime[4], localtime[5])
img.save("/sd/{}" .format(img_name))
music.pitch(1000, 200)
print('Save image: {}' .format(img_name))
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | from mpython import *
import smartcamera
import time
ai_camera =smartcamera.SmartCamera(Pin.P13,Pin.P14)
# 图片填充红色
ai_camera.image.fill((255, 0, 0))
ai_camera.lcd.display(ai_camera.image)
time.sleep(0.4)
# 图片填充绿色
ai_camera.image.fill((0, 255, 0))
ai_camera.lcd.display(ai_camera.image)
time.sleep(0.4)
# 图片填充蓝色
ai_camera.image.fill((0, 0, 255))
ai_camera.lcd.display(ai_camera.image)
time.sleep(0.4)
# 图片像素点清除
ai_camera.image.clear()
# 字符显示
ai_camera.image.DispChar("Hello,MaixPy!", 0, 0, color=(255, 255, 255))
ai_camera.image.DispChar("你好,掌控板!", 0, 16, color=(255, 0, 0))
# 画线
ai_camera.image.DispChar("水平线", 0, 40,(255, 255, 0))
ai_camera.image.hline(40, 50, 50, c=(255, 255, 0), thickness=1)
ai_camera.image.DispChar("垂直线", 0, 50,(255,0,0))
ai_camera.image.vline(50, 60, 50, c=(255,0,0), thickness=2)
ai_camera.image.DispChar("任意线", 0, 60,(0, 255, 255))
ai_camera.image.line(50, 70, 80, 90, c=(0, 255, 255), thickness=1)
#画点
import random
ai_camera.image.DispChar('画点',100,80)
for i in range(20):
x=random.randint(100,150)
y=random.randint(80,130)
ai_camera.image.pixel(x,y,c=(255,255,0))
ai_camera.lcd.display(ai_camera.image)
# # 绘制矩形框
ai_camera.image.DispChar('矩形', 100, 0)
ai_camera.image.rect(100, 16, 30, 30, c=(255, 0, 0), thickness=2)
# # 绘制实心矩形
ai_camera.image.DispChar('实心矩形', 150, 0)
ai_camera.image.fill_rect(150, 16, 30, 30, c=(0, 255, 0))
# 画中画
ai_camera.image.DispChar('画中画', 150, 60)
ai_camera.image.draw_image(ai_camera.sensor.snapshot(),150,80,x_scale=0.2, y_scale=0.2)
ai_camera.lcd.display(ai_camera.image)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from mpython import *
import smartcamera
ai_camera = smartcamera.SmartCamera(Pin.P13, Pin.P14)
# 模型加载
task = ai_camera.kpu.load(0x300000) # 人脸追踪 flash地址
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987,
5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
ai_camera.kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while True:
img = ai_camera.sensor.snapshot()
code = ai_camera.kpu.run_yolo2(task, img)
if code:
for i in code:
print('侦测到人脸, 位置({},{},{},{}), 概率为{:0.2f}'.format(
i['x'], i['y'], i['w'], i['h'], i['value']))
img.rect(i['x'], i['y'], i['w'], i['h'])
img.DispChar('{:0.2f}' .format(i['value']), i['x'], i['y'])
ai_camera.lcd.display(img)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from mpython import *
import smartcamera
ai_camera = smartcamera.SmartCamera(Pin.P13, Pin.P14)
classes = ['飞机', '自行车', '鸟', '船', '瓶子', '大巴', '小车', '猫', '椅子', '牛',
'餐桌', '狗', '马', '摩托车', '人', '植物', '羊', '沙发', '火车', '监视器']
task = ai_camera.kpu.load(0x640000) # 20类模型的flash地址
anchor = (1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52)
ai_camera.kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while True:
img = ai_camera.sensor.snapshot()
code = ai_camera.kpu.run_yolo2(task, img)
if code:
for i in code:
print('识别到{}, 位置({},{},{},{}), 概率为{:0.2f}' .format(
classes[i['classid']], i['x'], i['y'], i['w'], i['h'], i['value']))
img.rect(i['x'], i['y'], i['w'], i['h'])
img.DispChar('{},概率{:0.1f}' .format(
classes[i['classid']], i['value']), i['x'], i['y'])
ai_camera.lcd.display(img)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | from mpython import *
import smartcamera
ai_camera = smartcamera.SmartCamera(Pin.P13, Pin.P14)
# ai_camera.repl.debug =1
ai_camera.sensor.set_windowing((224, 224))
ai_camera.sensor.run(1)
ai_camera.lcd.clear()
ai_camera.lcd.draw_string(0, 0, "MobileNet_Classifier Demo")
labels=["daisy","dandelion","roses","sunflowers","tulipss"]
task = ai_camera.kpu.load("/sd/Classifier_flower.kmodel")
ai_camera.lcd.clear()
while True:
img = ai_camera.sensor.snapshot()
classifier_ret = ai_camera.kpu.forward(task, img)
classifier_max_pro = max(classifier_ret)
max_index = classifier_ret.index(classifier_max_pro)
ai_camera.lcd.display(img)
ai_camera.lcd.draw_string(0,0,"%.1f: %s" %(classifier_max_pro, labels[max_index]))
print("类别: {}, 概率: {}" .format(labels[max_index], classifier_max_pro))
|
上述示例 4类花图像分类kmodel模型
下载。