车牌识别三大步骤:

1、从图中找出车牌

2、从车牌中识别车牌号

3、通过训练提高识别率

本次仅实现第二步,这也是核心,其他两个属于附属功能,第三个可以通过GAN或Tesseract来进行训练,这个下篇再进行介绍。

核心步骤:

图片处理:1、将图片灰度化;2、将灰度图片二值化;3、校正;4、去燥;

图像切割识别:1、图像切割;2、图像识别

代码演示(注释):

需要导入,引入库为:opencv-python

#!/usr/bin/env python
# -*- coding:utf-8 -*-"""Author Alexantao By Charm
"""import cv2# 定义,都可根据应用进行调整
binary_threshold = 100
segmentation_spacing = 0.9  # 普通车牌值0.95,新能源车牌改为0.9即可# 1、读取图片,并做灰度处理
img = cv2.imread('img/nycar_num_test1.png')
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imshow('gray',img_gray)
cv2.waitKey(0)# 2、将灰度图二值化,设定阀值为140
img_thre = img_gray
cv2.threshold(img_gray, binary_threshold, 255, cv2.THRESH_BINARY_INV, img_thre)
cv2.imshow('threshold', img_thre)
cv2.waitKey(0)# 3、保存黑白图片
cv2.imwrite('img/thre_res.png',img_thre)# 4、分割字符
white = []  # 记录每一列的白色像素总和
black = []  # 记录每一列的黑色像素总和
height = img_thre.shape[0]
width = img_thre.shape[1]
print(width, height)
white_max = 0   # 仅保存每列,取列中白色最多的像素总数
black_max = 0   # 仅保存每列,取列中黑色最多的像素总数# 循环计算每一列的黑白色像素总和
for i in range(width):w_count = 0     # 这一列白色总数b_count = 0     # 这一列黑色总数for j in range(height):if img_thre[j][i] == 255:w_count += 1else:b_count += 1white_max = max(white_max, w_count)black_max = max(black_max, b_count)white.append(w_count)black.append(b_count)# False表示白底黑字;True表示黑底白字
arg = black_max > white_max# 分割图像,给定参数为要分割字符的开始位
def find_end(start_):end_ = start_ + 1for m in range(start_+1, width - 1):if(black[m] if arg else white[m]) > (segmentation_spacing * black_max if arg else segmentation_spacing * white_max):end_ = mbreakreturn end_n = 1
start = 1
end = 2
while n < width - 1:n += 1if(white[n] if arg else black[n]) > ((1 - segmentation_spacing) * white_max if arg else (1 - segmentation_spacing) * black_max):# 上面这些判断用来辨别是白底黑字还是黑底白字start = nend = find_end(start)n = endif end - start > 5:print(start, end)cj = img_thre[1:height, start:end]cv2.imwrite('img/{0}.png'.format(n), cj)      #此句是输出每个字符,当时未输出直接看的时候因为刷新问题,解决好久,后来发现只是显示刷新的问题cv2.imshow('cutChar', cj)cv2.waitKey(0)

图片:

二值图片:(白底黑字)

分割后:

一个一个字符分割显示。

 理工男(作者)自己的公众号:

        一个理工男的成长之路,如果你是理工男,带你“不正经”;如果你想了解理工男,带你认识理工男,他们是生活百事通,他们的生活简约而不简单。

不正经的原则:合规合法,信息保真能看懂,字越少事越大,学到真东西享受真实惠,有兴趣加入我一起“不正经”。

OpenCV+Python车牌字符分割和识别入门 (含新能源车牌识别)相关推荐

  1. python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...

    机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...

  2. python车牌字符分割_OpenCV+Python识别车牌和字符分割的实现

    本篇文章主要基于python语言和OpenCV库(cv2)进行车牌区域识别和字符分割,开篇之前针对在python中安装opencv的环境这里不做介绍,可以自行安装配置! 车牌号检测需要大致分为四个部分 ...

  3. opencv 车牌字符分割 ANN网络识别字符

    opencv 车牌字符分割 ANN网络识别字符   原文参考:https://www.cnblogs.com/chenzhefan/p/7629441.html 最近在复习OPENCV的知识,学习ca ...

  4. 基于连通域字符分割的流程_基于改进连通域算法的车牌字符分割方法

    基于改进连通域算法的车牌字符分割方法 朱亚萍,邱锦山,杨成忠 [摘 要] 摘要:为了解决车牌字符分割中不连通汉字分割.粘连字符分割以及 竖直边框干扰等问题,提出了一种基于改进连通域算法的车牌字符分割方 ...

  5. MATLAB中肤色分割算法_基于MATLAB的车牌字符分割问题

    引言 车牌识别系统是一项比较成熟的技术,并且已经得到了广泛的应用. 图1 车牌识别系统(图片来源于网络) 车牌识别技术主要包含三个方面:车牌定位.字符分割和字符识别三个核心模块.车牌定位是利用车牌的颜 ...

  6. yolov3 python含新能源车牌识别系统有pyqt5界面

    yolov3 python含新能源车牌识别系统有pyqt5界面 # First download Darknet project $ git clone https://github.com/pjre ...

  7. 号牌号码识别,支持新能源车牌,离线识别,喜欢就收下吧

    号牌号码识别,支持新能源车牌,离线识别 我的项目地址: https://github.com/ccc920123/LicensePlateDemo 如果喜欢记得标星哟!!! 号牌识别,支持新能源车,离 ...

  8. 小程序验证车牌号(含新能源车牌)

    之前写的一个,小程序扫描二维码,正则校验:https://www.jianshu.com/p/61217e42a143,现在又遇到了一个小程序验证车牌号(含新能源车牌)的需求,其实思想是类似的,一并写 ...

  9. python圈出车牌字符_Python+OpenCV实现车牌字符分割和识别

    最近做一个车牌识别项目,入门级别的,十分简单. 车牌识别总体分成两个大的步骤: 一.车牌定位:从照片中圈出车牌 二.车牌字符识别 这里只说第二个步骤,字符识别包括两个步骤: 1.图像处理 原本的图像每 ...

  10. 基于GRNN广义回归神经网络的车牌字符分割和识别matlab仿真

    目录 一.理论基础 二.核心MATLAB程序 三.MATLAB仿真测试结果 一.理论基础 GRNN通常被用来进行函数逼近.它具有一个径向基隐含层和一个特殊的线性层.第一层和第二层的神经元数目都与输入的 ...

最新文章

  1. freemarker基本语法及实例
  2. [afterCode] docker 速成班 1: image
  3. 给Jquery添加alert,prompt方法,类似系统的Alert,Prompt,可以响应键盘,支持拖动...
  4. 设定Windows计划任务定期执行PowerShell脚本
  5. 阿里邮箱发布“Mail+”战略 有望与畅捷通工作圈互通互联
  6. 和qc哪个发展更好_城西公司举办2020年度QC成果推广交流发布会
  7. 阿里巴巴指东打西,PC之后卖盒饭?
  8. 力扣100. 相同的树(JavaScript)
  9. Java Web学习总结(11)——Session使用示例教程
  10. Kivy: Crossplatform Framework for NUI
  11. 移植制造时保持资源的「统一」。
  12. 【python】多进程返回值比较
  13. headtail命令
  14. iOS 结合YYLabel实现文本的展开和收起
  15. 【程序员如何买基金 八】筛选优秀的债券基金
  16. 计算机键盘都起什么作用,电脑键盘各个按键功能 电脑键盘各个按键有什么功能...
  17. vnc以及xfce安装\xrdp连接
  18. 【数据结构】01-绪论《数据结构 C语言版(严蔚敏、吴伟民)》
  19. 【渝粤题库】陕西师范大学292021 初级宏观经济学 作业(高起专)
  20. 【原创】HTML学习(2020.2.4)

热门文章

  1. 制作一个html网页的步骤,制作一个完整的网页的步骤
  2. 服务器的ras性能指标,Memory RAS Configuration
  3. 纠结火锅去哪吃,用Python可视化做个数据呈现决定吧(附学习资源)
  4. 计算机体系结构期末重点,计算机系统结构期末重点题目及考点
  5. 如何计算近似纳什均衡_博弈 | 精炼贝叶斯纳什均衡
  6. 微信小程序入门八头像上传
  7. 基于WordPress建个人博客
  8. win10台式计算机调亮度,台式win10电脑屏幕亮度无法调节怎么办
  9. Oracle LiveLabs实验:Introduction to Oracle Spatial Studio
  10. Acwing 187. 导弹防御系统