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. 图像切割和识别
通过代码实现:
运行效果如图所示
车牌定位并进行处理
车牌分割如图所示
来源: https://www.2cto.com/kf/201905/806373.html