【01Studio MaixPy AI K210】15.人脸识别

目录

导包:

KPU库

部署模型

例程1

例程思路

测试图片

例程2

导包:

import sensor,lcd,time
import KPU as kpu

KPU库

'''
初始化 yolo2 网络;
【kpu_net】kpu 网络对象, 即加载的模型对象, KPU.load()的返回值
【threshold】概率阈值, 只有是这个物体的概率大于这个值才会输出结果, 取值范围:[0, 1]
【nms_value】box_iou 门限;
【anchor_num】描点数;
【anchor】锚点参数与模型参数一致,同一个模型这个参数是固定的,和模型绑定的(训练模型时即确定了), 不能改成其它值。

返回值:
	bool类型, 是否成功
'''
kpu.init_yolo2(kpu_net,threshold,nms_value,anchor_num,anchor)

'''
参数:
	offset 和 file_path 参数只能二选一,不需要关键词,直接传参即可
	offset: 模型在 flash 中的偏移大小,如 0xd00000 表示模型烧录在13M起始的地方, 0x300000表示在 Flash 3M的地方
	file_path: 模型在文件系统中为文件名, 如 “/sd/xxx.kmodel”

返回:
	如果正确加载,会返回返回值, 否则会抛出错误, 请看抛出的错误提示, 另外错误代码参考这里
	如果发现错误代码是小于 2000 的值, 则是固件版本太低,需要更新固件版本
'''
KPU.load(offset, file_path)

'''
运行 yolo2 网络;
【kpu_net】从 kpu_load()中返回的网络对象;
【image】从 sensor 中采集到的图像

返回值:
	list: kpu_yolo2_find 的列表
'''
kpu.run_yolo2(kpu_net,image)

'''
反初始化。
【kpu_net】kpu 网络对象;
'''
kpu.deinit(kpu_net)

部署模型

例程1

例程思路

'''
main.py

人脸检测
'''

import sensor,lcd,time
import KPU as kpu

#设置摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
#sensor.set_vflip(1)    #设置摄像头后置

lcd.init() #LCD初始化

clock = time.clock()

#task = kpu.load(0x300000) #需要将模型(face.kfpkg)烧写到flash的 0x300000 位置
task = kpu.load("/sd/facedetect.kmodel") #模型SD卡上

#模型描参数
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)

#初始化yolo2网络
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)

while(True):
    clock.tick()
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img) #运行yolo2网络

    #识别到人脸就画矩形表示
    if code:
        for i in code:
            print(i)
            b = img.draw_rectangle(i.rect())

    #LCD显示
    lcd.display(img)

    print(clock.fps())   #打印FPS

测试图片

例程2

'''
main.py

用按键转换前后摄像头
'''

import sensor,lcd,time
import KPU as kpu
from Maix import GPIO
from fpioa_manager import fm

flag=1

#配置引脚
fm.register(16,fm.fpioa.GPIO0) #注册引脚
key=GPIO(GPIO.GPIO0,GPIO.IN)

#设置摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(flag)    #设置摄像头后置

lcd.init() #LCD初始化

clock = time.clock()

#task = kpu.load(0x300000) #需要将模型(face.kfpkg)烧写到flash的 0x300000 位置
task = kpu.load("/sd/facedetect.kmodel") #模型SD卡上

#模型描参数
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)

#初始化yolo2网络
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)

while(True):
    clock.tick()
    if key.value()==0:
        while key.value()==0:
            pass
        if flag==1:
            flag=0 #摄像头前置
        elif flag==0:
            flag=1 #摄像头后置
        sensor.set_vflip(flag) #转换摄像头

    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img) #运行yolo2网络

    #识别到人脸就画矩形表示
    if code:
        for i in code:
            print(i)
            b = img.draw_rectangle(i.rect(),thickness=2)
            img.draw_string(i.x()+5,i.y(),'face',color=(255,255,255),scale=2,mono_space=False)

    #LCD显示
    lcd.display(img)

    print(clock.fps())   #打印FPS
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因心,三人水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值