python字典实例(部分)
主要内容:通过百度车牌识别实例学习python字典类型的使用
任务布置:
关键词:Labview&python、字典类型、百度ai识别接口、车牌识别、车辆区间测速。
正文:
在生活中摄像识别无处不在,其中车牌识别在停车场或道路抓拍测速应用最多,为了达到好的学习效果,先需要学习python中字典类型,然后进行车牌识别应用开发就更顺畅。
如果一本书没有目录,那么你要找到某一故事情节需要把书翻看一遍,那新华字典如果没有查字引索,大量的数据无从下手。在python语言中提出字典(dictionary)类型的概念:能够存储不同类型的可变容器,由键和键值组成。在结构功能上类似于虚拟仪器中的数据簇,都是通过名称来映射数据达到更好管理数据的目的。字典类型具体格式如下:
创建字典类型的格式:字典名称 = {'键名1':'键值1','键名2':'键值2'}
访问或修改字典数据:字典名称['键名'] = 参数
一个字典可定义多个键名,键名与键值之间用冒号隔开,键名不允许重复,键与键之间用逗号隔开,整个键区域边界是{},在访问字典时键名在[]内部。图1是运用python字典实现对水果信息描述的操作,水果信息字典包括有两个字符和一个数值,print打印整个字典会输出带格式的字
图2.python字典描述游戏人物属性
学习python 字典类型语法后,通过具体实例来巩固知识点的应用,实例是运用基于百度Ai平台的车牌识别。
运用外部接口首先需要阅读开发文档,在说明中会发现图片读取函数是通用的,唯一变动的是将图片传入客户端的licensePlate函数中处理(client.licensePlate)。然后查看输出返回代码,返回信息是按照python字典输出,查询简单参数用字典访问规则就可实现,省去了第二节的labview解析处理结构。
图3.百度Ai车牌识别接口说明
图4.调试代码与原始返回结果
根据图4左侧代码编译后发现:返回结果的原始数据远远比说明详细,增加了识别准确率信息和车牌位置信息。如果运用labview字符扫描解码很容易出错,python字典查询方式避免了结构变动的影响,所以用python在字典中访问车牌号的格式是:
字典名[一级目录][二级目录](car[结果返回][号码])。
百度平台的车牌识别也是归属于文字识别,所以权限口令彼此通用,只是最后调用的函数变动,所以修改第2节实例最后的输出,将返回赋予对象,用字典格式查询对象里面的车牌号即可。图5去掉了输出的解析部分,运用Labview打开显示图片,然后python去识别图片中的车牌号。需要注意的是百度Ai的车牌识别接口每天免费调用200次(超出按量付费),不能无限次的使用,可以在出入口加入红外或超声波距离传感器,当有车辆时才去摄像进行车辆识别,提高接口的使用率。
(未加入摄像头)
区间测速是在同一路段设置两个相邻的监控点,通过车辆通过此路段的时间来计算平均速度,然后根据限速标准来判断是否超速。原理都知道,需要注意的是区间测速路段同时会有多辆车在行驶,不是一辆车的测速,需要记录和协调多辆车的行驶信息。首先入口摄像头抓拍车辆图像,通过识别接口得到车牌号后,与进入时间注册添加到测速容器中,出口时同样得到车牌号,速度公式计算区段内对应车辆的平均速度。
图6是用虚拟仪器中簇方法来实现车辆信息存储计算,入口注册时自动填入识别到的[车牌号][进入时间][intime(s)],这[intime]是绝对秒时间方便计算通过时间,出口时的原理是识别到车牌号,找到对应车牌号ID添加出口的时间,然后用出入绝对时间(秒)相减计算通过时间,所以平均速度(km/h)=位移(km)/时间(h)。将得到的车辆区间测速的完整记录存入数据库,注销对应车辆容器信息条。
图6.区间测速车辆记录容器
本文转载自异步社区