K210M1 dock车牌识别

车牌识别


前言

先来看一下效果视频

K210 dock车牌识别

一、车牌识别

选用的是K210 M1Dock,实现用的是01的固件,效果确实可以,原本他们是用在canmv上的,我把固件烧录到了K210上,然后把模型放到K210里,同样可以运行。

二、模型文件和代码

1.模型文件

在这里插入图片描述
然后看一下固件
在这里插入图片描述
这个是中文字库
在这里插入图片描述

2.代码

import sensor, image, time, lcd
from maix import KPU, utils
import gc

lcd.init()
sensor.reset()                      # Reset and initialize the sensor. It will
                                    # run automatically, call sensor.run(0) to stop
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 1000)     # Wait for settings take effect.
#sensor.set_hmirror(1)
#sensor.set_vflip(1)
clock = time.clock()                # Create a clock object to track the FPS.
#image.font_load(image.UTF8, 16, 16, '/sd/font/0xA00000_font_uincode_16_16_tblr.Dzk') # load chinese font file
image.font_load(image.UTF8, 16, 16, 0xA00000)

province_cn = ("皖沪津渝冀晋蒙辽吉黑苏浙京闽赣鲁豫鄂湘粤桂琼川贵云藏陕甘青宁新")
ads = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9')

anchor = (8.30891522166988, 2.75630994889035, 5.18609903718768, 1.7863757404970702, 6.91480529053198, 3.825771881004435, 10.218567655549439, 3.69476690620971, 6.4088204258368195, 2.38813526350986)
kpu = KPU()
kpu.load_kmodel("/sd/KPU/licenseplate_recognization/lp_detect.kmodel")
kpu.init_yolo2(anchor, anchor_num=5, img_w=320, img_h=240, net_w=320 , net_h=240 ,layer_w=20 ,layer_h=15, threshold=0.7, nms_value=0.3, classes=0)

lp_recog_kpu = KPU()
lp_recog_kpu.load_kmodel("/sd/KPU/licenseplate_recognization/lp_recog.kmodel")
#lp_recog_kpu.lp_recog_load_weight_data(0x600000, 1498500) # load after-process data
lp_recog_kpu.lp_recog_load_weight_data("/sd/KPU/licenseplate_recognization/lp_weight.bin") # load after-process data

RATIO = 0.16
def extend_box(x, y, w, h, scale):
    x1_t = x - scale*w
    x2_t = x + w + scale*w
    y1_t = y - scale*h
    y2_t = y + h + scale*h
    x1 = int(x1_t) if x1_t>1 else 1
    x2 = int(x2_t) if x2_t<320 else 319
    y1 = int(y1_t) if y1_t>1 else 1
    y2 = int(y2_t) if y2_t<256 else 255
    cut_img_w = x2-x1+1
    cut_img_h = y2-y1+1
    return x1, y1, cut_img_w, cut_img_h

lp_index_list = []

while 1:
    clock.tick()                    # Update the FPS clock.
    img = sensor.snapshot()
    kpu.run_with_output(img)
    dect = kpu.regionlayer_yolo2()
    fps = clock.fps()
    if len(dect) > 0:
        #print("dect:",dect)
        for l in dect :
            x1, y1, cut_img_w, cut_img_h= extend_box(l[0], l[1], l[2], l[3], scale=RATIO)
            lp_cut = img.cut(x1, y1, cut_img_w, cut_img_h)
            a=img.draw_rectangle(l[0],l[1],l[2],l[3], color=(255, 0, 0))
            lp_resize = lp_cut.resize(208,64)
            a=lp_resize.replace(vflip=0, hmirror=1)
            lp_resize.pix_to_ai()
            lp_recog_kpu.run_with_output(lp_resize)
            out = lp_recog_kpu.lp_recog()
            #print("out:",len(out))
            lp_index_list.clear()
            for n in out:
                max_score = max(n)
                index = n.index(max_score)
                lp_index_list.append(index)
            del (lp_cut)
            del (lp_resize)
            show_lp_str = "%s   %s-%s%s%s%s%s" %(province_cn[lp_index_list[0]], ads[lp_index_list[1]], ads[lp_index_list[2]],
                ads[lp_index_list[3]], ads[lp_index_list[4]], ads[lp_index_list[5]], ads[lp_index_list[6]])
            print(show_lp_str)
            a=img.draw_string(l[0], l[1]-18, show_lp_str, color=(255, 128, 0), scale=1)
    #img.replace(vflip=0, hmirror=1)
    a=img.draw_string(10, 0, "%2.1ffps" %(fps), color=(255, 255, 0), scale=1)
    lcd.display(img)
    # print("mem free:",gc.mem_free())
    # print("heap free:",utils.heap_free())
    gc.collect()

image.font_free()
kpu.deinit()
lp_recog_kpu.deinit()

完整的代码已经上传到资源里,可以自行下载。

  • 10
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 34
    评论
当然,我很乐意为您提供有关使用MaixDuino平台训练人脸口罩识别模型的教程。以下是一些步骤和指导: 步骤1:安装并设置MaixDuino 首先,您需要安装MaixDuino。MaixDuino是一个开源的Arduino库,旨在支持@Sipeed公司的系列AIOT板子,包括Sipeed Maixduino Kit和Kendryte K210 MCU。您可以从Sipeed的GitHub仓库中下载Maixduino库。 安装完成后,请设置您的开发板和电脑之间的通信端口,并根据需要配置其他设置。 步骤2:安装OpenMV IDE 接下来,您需要安装OpenMV IDE。OpenMV是一个Python编写的基于嵌入式视觉的IDE,可用于在MaixDuino平台上运行深度学习算法。 步骤3:收集训练数据 要训练人脸口罩检测器,您需要收集足够的训练数据。这包括一些有口罩和没有口罩的人脸图像。 您可以在互联网上找到这些图像,或者自己拍摄一些。不管您选择哪种方式,确保收集的图像足够量且清晰,且所有人脸上的口罩不一致。 步骤4:预处理训练数据 在训练算法之前,您需要对训练数据进行一些预处理。这将帮助您的算法更好地理解数据。 要预处理数据,请将其转换为数字数据。您可以使用OpenCV或其他类似的工具进行此操作。还可以将其标准化,以使其更容易与深度学习算法进行训练。 步骤5:训练模型 现在,您可以开始训练模型了。使用OpenMV IDE,您可以将模型编写为Python代码并使用MaixDuino平台进行训练。 在训练过程中,请确保使用交叉验证等技术,以避免过度拟合。还要确定权重和偏置等参数是否正确设置。 步骤6:测试模型 完成训练后,请使用测试数据测试模型的性能。这将确保模型可以准确识别人脸口罩。 如果模型表现良好,则可以将其提取并在应用程序中使用。您可以使用Arduino进行此操作,并使用模型执行人脸口罩检测。 希望这个教程可以帮助到您,如果您有其他问题,可以随时向我提问。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我与nano

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

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

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

打赏作者

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

抵扣说明:

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

余额充值