10383浏览
查看: 10383|回复: 5

[项目分享] 【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别

[复制链接]

【MaixPy教程】用mixly玩转K210——调用AI-OneNET API实现车牌识别

【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图1
【MaixPy系列教程:】

前言

什么是oneNET  AI,他可以做什么?

人工智能与物联网的融合带来的是一个全新的时代。这个时代,人与人的连接、人与物的连接、物与物的连接都将被全面赋能,人工智能+物联网的化学反应,将深度赋能时代。
作为国内三大运营商物联网开放平台中首个上线的人工智能开放平台,中国移动OneNET AI将解锁更多行业、更多场景的物联网应用,让应用智能化“无处不在”。
OneNET AI 提供人脸识别、图像识别、图像处理和视频处理等全方位的AI能力,同时通过应用封装,提供更贴近用户的解决方案.
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图2

如何申请OneNET账户?

流程如下:
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图3
1.用户注册登录
进入OneNET AI平台首页
,点击顶部导航栏右侧注册,将跳转到OneNET平台注册界面,填写相关信息完成用户注册。
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图4
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图5
首次使用,注册成功后即可登录平台。在OneNET AI平台首页,点击顶部导航栏右侧登录,进入登录页面,输入账号、密码、验证码进行登录。
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图6
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图7
2.实名认证
通过实名认证的新用户即可申请使用API调用权限。
完成账号注册后,需登录OneNET平台,点击头像下拉菜单“实名认证”进入实名认证页面,进行实名认证操作。
温馨提示:实名认证方式分为企业和个人两种类型,可根据自己的需要选择认证方式;已经认证为个人的用户可升级成为企业;
3.API调用权限申请
完成实名认证的用户可根据页面提示,进行API调用权限开通。您可以提交申请单等待客服人员的审核;或者按照页面提供的联系方式主动联系客服人员,快速开通API调用权限。
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图8【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图9[在这里插入图片描述](https://img-blog.csdnimg.cn/20200425213101146.jpg4.API调用
目前AI产品主要开放了REST API形式的服务,你可以点击平台主页「帮助文档」-「技术文档」目录下的各技术服务文档,查看具体使用方法及参数。
在您正式调用AI能力之前,请先通过用户鉴权方法获取Login Token,便于后续调用各项AI能力,方法详见用户鉴权文档。
温馨提示:Login Token的有效期为24小时,请您调用时注意在程序中定期请求新的token。

编写程序

打开我们的mixly找到人工智能模块可以看到有关AI_OneNET的积木块:
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图11
在阅读OneNET AI平台的帮助文档,要用人工智能的API首先要获得用户鉴定权(也就是token)
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图12
如果用python来写一个请求示例代码要这么多代码:

import requests
import json
import base64
import random

class SimpleEncode():
    keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+-={}[]:;<,>.?/|"
    keyLength = len(keyStr)
    encryptionA = 17
    encryptionB = 8
    decodeA = 0
    preCountMax = 15
    postCount = 5
    randomChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop"
    randomCharLength = len(randomChar)
    #base64字符
    ALPHABET = "ABCDEFGHIJKLMN0123456789OPQRSTUVWXYZ+/abcdefghijklmnopqrstuvwxyz"
    STANDARD = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"  # 标准的字符串索引

    #找到密钥
    for i in range(1,keyLength):
            if (encryptionA * i) % keyLength == 1:
                decodeA = i

    def base64Encode(self,sourceStr):
        encode = ""
        for ch in base64.b64encode(sourceStr.encode()).decode():
            if ch == '=':
                encode += '='
            else:
                for i in range(64):
                    if ch == self.STANDARD:
                        encode += self.ALPHABET
        return encode

    def encrpyt(self,sourceStr):
        srcLength = len(sourceStr)
        #先加入干扰字符的数量
        addCharCount = random.randint(1,self.preCountMax) if srcLength < self.preCountMax else 0
        #随机字符
        sb = str(addCharCount)+"|"
        for i in range(addCharCount):
            sb += self.randomChar[random.randint(0,self.randomCharLength-1)]

        sb += sourceStr
        #尾部固定增加x个字符
        for i in range(self.postCount):
            sb += self.randomChar[random.randint(0,self.randomCharLength-1)]

        #base64 加密
        base64Str = self.base64Encode(sb)

        destStr = ''
        for i in range(len(base64Str)):
            #找到字符所在位置
            position = self.keyStr.find(base64Str)

            #对字符进行转换
            y = (self.encryptionA * position + self.encryptionB) % self.keyLength

            #找到替换后的字符

            destStr += self.keyStr[y]

        return destStr

if __name__ == '__main__':
    url = 'http://ai.heclouds.com:9090/v1/user/oneNetLogin'
    headers = {
        'Content-Type': 'application/json',
    }
    account = ''  # 用户名
    password = ''  # 用户密码
    simpleencode = SimpleEncode()
    data = {'account': account, 'password': simpleencode.encrpyt(password)}
    print(data)
    req = requests.post(url, data=json.dumps(data), headers=headers)
    print(req.text)

那么在我们的mixly里只需要下面几个积木块就可以实现:【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图13有了Token码,现在我们就可以调用API中的车牌信息识别:【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图14在调用车牌识别之前首先我们需要将我们的摄像头和液晶屏幕初始化然后实时拍照将图片上传到AI云平台,通过AI运算把识别到的图片信息以字典的形式发送到MaixPy 主控板上。我们只需要字典中的date数据,里面有车牌号和车牌颜色。如下图所示:【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图15虽然这样子识别到了车牌号,调用API的程序是一直运行的,这时会造成我们的调用次数的减少,虽然每天有10000次的调用量,但也不能经得起这样调用啊,所用我们对程序做了一个小小的优化,加入按键控制进行调用API,(我这里用的是maix DOCK,一个按钮引脚和GPIO16相连,没有板载按钮的可以使用外接按钮)

程序优化:

【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图16

程序演示:










btx000  学徒

发表于 2020-4-26 21:26:43

k210完全可以离线识别车牌的
【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图1
回复

使用道具 举报

txm派瑞深山锹  高级技师

发表于 2020-4-27 09:05:43

btx000 发表于 2020-4-26 21:26
k210完全可以离线识别车牌的

请问板型选的是什么?
回复

使用道具 举报

hockel  中级技匠
 楼主|
来自手机

发表于 2020-4-27 09:16:08

btx000 发表于 2020-4-26 21:26
k210完全可以离线识别车牌的

来加波VX好友:15755473xxx,交流交流!
回复

使用道具 举报

 学徒

发表于 2020-5-6 14:31:55

btx000 发表于 2020-4-26 21:26
k210完全可以离线识别车牌的

求教程,分项一下经验呗
回复

使用道具 举报

vGE98-Au  学徒

发表于 2021-6-9 15:33:20

大佬,我复现的时候,发现Mixly程序一直上传不了【MaixPy教程】用mixly玩转K210——调用AI_OneNET API实现车牌识别图1出现这个问题,求大佬帮忙!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail