zoukankan      html  css  js  c++  java
  • OpenCV+Python识别车牌和字符分割的实现

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

    车牌号检测需要大致分为四个部分:

    1.车辆图像获取

    2.车牌定位、

    3.车牌字符分割

    4.车牌字符识别

    具体介绍

    车牌定位需要用到的是图片二值化为黑白后进canny边缘检测后多次进行开运算与闭运算用于消除小块的区域,保留大块的区域,后用cv2.rectangle选取矩形框,从而定位车牌位置

    车牌字符的分割前需要准备的是只保留车牌部分,将其他部分均变为黑色背景。这里我采用cv2.grabCut方法,可将图像分割成前景与背景。分割完成后,再经过二值化为黑白图后即可进行字符分割。由于图像中只有黑色和白色像素,因此我们需要通过图像的白色像素和黑色像素来分割开字符。即分别通过判断每一行每一列的黑色白色像素值的位置,来定位出字符。

    具体步骤如下:

    1.灰度转换:将彩色图片转换为灰度图像,常见的R=G=B=像素平均值。

    2.高斯平滑和中值滤波:去除噪声。

    3.Sobel算子:提取图像边缘轮廓,X方向和Y方向平方和开跟。

    4.二值化处理:图像转换为黑白两色,通常像素大于127设置为255,小于设置为0。

    5.膨胀和细化:放大图像轮廓,转换为一个个区域,这些区域内包含车牌。

    6.通过算法选择合适的车牌位置,通常将较小的区域过滤掉或寻找蓝色底的区域。

    7.标注车牌位置

    8.图像切割和识别

    通过代码实现:


     

    运行效果如图所示

    车牌定位并进行处理


     

    车牌分割如图所示


     
  • 相关阅读:
    【NOIP2013】花匠
    【DP合集】tree-knapsack
    【DP合集】m-knapsack
    【DP合集】背包 bound
    【DP合集】合并 union
    【DP合集】棋盘 chess
    BZOJ1026 [SCOI2009]windy数
    最长上升子序列 LIS nlogn
    再谈线性基
    数论问题算法模板
  • 原文地址:https://www.cnblogs.com/Pythonmiss/p/10802382.html
Copyright © 2011-2022 走看看