2021SC@SDUSC

源代码下载地址:https://gitee.com/zeusees/HyperLPR

源码配置的详情见第一篇分析

本篇内容将总结之前所分析的SimpleRecognizePlateByE2E()函数:

一、源码

def SimpleRecognizePlateByE2E(image):t0 = time.time()images = detect.detectPlateRough(image,image.shape[0],top_bottom_padding_rate=0.1)res_set = []for j,plate in enumerate(images):plate, rect, origin_plate  =plateplate  =cv2.resize(plate,(136,36*2))res,confidence = e2e.recognizeOne(origin_plate)print "res",rest1 = time.time()ptype = td.SimplePredict(plate)if ptype>0 and ptype<5:plate = cv2.bitwise_not(plate)image_rgb = fm.findContoursAndDrawBoundingBox(plate)image_rgb = fv.finemappingVertical(image_rgb)image_rgb = fv.finemappingVertical(image_rgb)cache.verticalMappingToFolder(image_rgb)res,confidence = e2e.recognizeOne(image_rgb)print res,confidenceres_set.append([[],res,confidence])if confidence>0.7:image = drawRectBox(image, rect, res+" "+str(round(confidence,3)))return image,res_set

二、总结

image.shape[]数组含义如下:

image.shape[0], 图片垂直尺寸

image.shape[1], 图片水平尺寸

image.shape[2], 图片通道数

函数功能总结:

首先获得当前系统时间。随后对图片进行粗定位,将图片转为黑白的照片,并通过cv2中的detectMultiScale识别车牌位置,最后粗略地裁剪图片到车牌位置。

在for循环中,先将图片复制三份保存用于后续处理,对plate中的图片进行指定大小裁剪,对origin_plate进行recognizeOne操作,随后将返回值res输出,之后也并未用到res和该confidence。

再次获取系统时间后,SimplePredict()先对图片进行裁剪操作,再用astype进行强制类型转换防止溢出。针对这些图片进行预测,然后返回图像的维度的最大值。当该值位于0~5之间时,对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,~1=0,~0=1。

接下来对图片进行精定位,使用findContoursAndDrawBoundingBox(...)将车牌具体位置进行定位,定位后如下:

随后进行两次finemappingVertical()操作再对图片进行进一步的裁剪,将各个文字的左右边界裁剪下来,识别出文字。

随后将图片进行utf-8加密后保存。再对已精定位处理过后的图片进行识别,得出车牌号码,插入数组尾部,再对下一张照片进行上述操作获得车牌。

最后当处理好的文件可信度大于0.7时,将对一开始输入进行识别的图片中,框出识别出的车牌并显示车牌号码。drawRectBox函数用于打上boundingbox和标签(为之前函数生成的车牌号码)。

HyperLPR车牌识别库代码分析(9)相关推荐

  1. HyperLPR车牌识别库代码分析(1)

    2021SC@SDUSC 源代码下载地址:https://gitee.com/zeusees/HyperLPR 本项目为山东大学19级软件工程专业软件工程应用与实践课题,我们小组负责该项目的源代码中关 ...

  2. HyperLPR车牌识别库代码分析(6)

    2021SC@SDUSC 源代码下载地址:https://gitee.com/zeusees/HyperLPR 源码配置的详情见第一篇分析 本篇内容将继续根据小组分配的任务进行分析,内容如下: 一.f ...

  3. HyperLPR车牌识别库代码分析(12)

    2021SC@SDUSC 源代码下载地址:https://gitee.com/zeusees/HyperLPR 源码配置的详情见第一篇分析 本篇内容将总结之前所分析的SimpleRecognizePl ...

  4. HyperLPR车牌识别库代码分析总结(15)

    2021SC@SDUSC 源代码下载地址:https://gitee.com/zeusees/HyperLPR 源码配置的详情见第一篇分析 本篇内容将总结之前所分析的三个函数: 一.SimpleRec ...

  5. Mobile-LPR——面向移动端的准商业级车牌识别库

    今天发现一个很棒的车牌识别项目,精度高.代码高度优化.方便使用,感谢开发者xiangweizeng!欢迎大家参考- 项目地址: https://github.com/xiangweizeng/mobi ...

  6. HyperLPR车牌识别技术算法之车牌精定位

    关于HyperLPR HyperLPR是一个使用深度学习针对对中文车牌识别的实现,与较为流行的开源的EasyPR相比,它的检测速度和鲁棒性和多场景的适应性都要好于目前开源的EasyPR,HyperLP ...

  7. 最新优秀开源:车牌识别、车型分析、车流统计、违停检测统统行

    停车场闸机的车牌识别.道路两侧的违停检测.繁华路口的车流统计.茫茫车海中的车辆锁定-这些场景背后的技术原理大家是否在心中简单构思过?抑或想要抽时间自己攒一套出来可却又不知从何下手?--PP-Vehic ...

  8. HyperLPR车牌识别技术算法之车牌粗定位与训练

    关于HyperLPR HyperLPR是一个使用深度学习针对对中文车牌识别的实现,与较为流行的开源的EasyPR相比,它的检测速度和鲁棒性和多场景的适应性都要好于目前开源的EasyPR,HyperLP ...

  9. pp-vehicle车牌识别检测代码

    车牌识别实例化 1.在官网拉取最新代码,并创建检测py文件,并引入相应的库 import os,cv2,time import numpy as np import argparse from dep ...

最新文章

  1. java字符编码问题_java 字符编码问题
  2. 穿迷宫、搭积木、现场编程 看看孩子们的机器人“大战”
  3. 汽车线束测试软件,Aigtek线束测试仪,汽车线束测试_高精度自动测试_操作简单...
  4. 【学习笔记】5、Python基础语法
  5. 【转载】单片机的背后
  6. C#调用python文件
  7. php实现报表的分组统计sql,实现报表的分组统计,其操作区域是。
  8. HDU - 5769 Substring(后缀数组)
  9. 也谈莫言荣获诺贝尔文学奖后我的“低调”
  10. 模块的封装性分析-读书笔记
  11. 基于JAVA+Servlet+JSP+MYSQL的高校后勤管理系统
  12. 向mysql中添加更新时间_mysql 实现添加时间自动添加更新时间自动更新操作
  13. windows下linux下socket编程区别
  14. .net获取当前网址url
  15. 小艾机器人apk_小艾QQ群机器人安卓版
  16. premiere学习笔记01帧定格,时间码,透明视频,调整图层,转场及批量转场,插件安装,音频调整,关键帧,马赛克,蒙版,嵌套序列
  17. ibm的odm使用_使用IBM ODM API生成规则工件
  18. 计算机三维艺术设计基础,计算机艺术设计基础(修订版)
  19. (附源码)ssmJavaEE无人机数据管理系统 毕业设计 111022
  20. 400万像素摄像头,你还在用百兆交换机吗?

热门文章

  1. 概率图模型(PGM)综述-by MIT 林达华博士
  2. google map for Android
  3. 目标检测系列:高分辨率表示HRNetV1、HRNetV2/V2p
  4. 软件测试与软件开发的关系是怎样的?
  5. A7139射频模块wor配置解析
  6. java 多线程分段等待执行完成状况,循环屏障CyclicBarrier | Java工具类
  7. (数据库系统)(十二)故障恢复
  8. Windows 定时启动 关闭软件
  9. Nature综述:培养未被培养微生物的创新方法
  10. 曲线图chart.js插件例子