知足常乐|最优!python+opencv实现蓝色车牌字符分割

1 说明:
=====
1.1 完整汽车车牌的识别 , 包括汽车车牌的定位 , 提取 , 字符分割显示和车牌识别四大部分 。
1.2 目前这已经是一项成熟的技术 , 本文主要通过汽车车牌的字符分割并显示车牌号码 , 熟悉python和opencv的技术 。
1.3 本文已经写了2篇相关文章 , 汽车车牌的定位、提取 , 本文重点讲解蓝色小轿车的汽车车牌的字符分割、保存、显示技术 。
1.4 讲解非常清楚 , 注释详细 , 通俗易懂 , 并复习opencv的threshold函数 。
知足常乐|最优!python+opencv实现蓝色车牌字符分割2 操作和效果图:
知足常乐|最优!python+opencv实现蓝色车牌字符分割
知足常乐|最优!python+opencv实现蓝色车牌字符分割3 声明:
=====
3.1 汽车和车牌:来自今日头条免费正版图库 , 仅供学习 。
知足常乐|最优!python+opencv实现蓝色车牌字符分割如有冒犯 , 请谅解 , 仅供学习
3.2 汽车车牌提取:
知足常乐|最优!python+opencv实现蓝色车牌字符分割1.png , 提取出来的汽车车牌
3.3 参考我的上一篇文章:
《一步一步详细讲解:python+opencv的车牌提取大全》
3.4 环境:
python3.8 , 深度操作系统deepin-linux , 微软编辑器vscode , opencv版本4.2.0 。
【知足常乐|最优!python+opencv实现蓝色车牌字符分割】===重点===
4 代码讲解:
========
4.1 第1步:导入模块:
import cv2import numpy as np4.2 第2步:图片的预处理
# 2-1:读取抠出来的蓝色车牌 , 汽车提取出来的车牌img=cv2.imread('/home/xgj/Desktop/carcut/1.png')cv2.imshow('carblurpai',img)cv2.waitKey(0)# 2-2:图像归一化img_resize = cv2.resize(img,(136,36),interpolation=cv2.INTER_AREA)# 2-3:灰度化+二值化img_gray_1 = cv2.cvtColor(img_resize,cv2.COLOR_BGR2GRAY)ret1,img_thre_1 = cv2.threshold(img_gray_1,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)# 2-4:高斯模糊img_gaus = cv2.GaussianBlur(img_resize,(3,5),0) # 2-5:灰度处理img_gray = cv2.cvtColor(img_gaus,cv2.COLOR_BGR2GRAY) # 2-6:图像黑白的二值化ret,img_thre = cv2.threshold(img_gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) 4.3 第3步:判断底色和字体色 , 当然经过预处理后肯定符合 , 主要是处理后将相关指标存储起来以备后面调用 。
# 3-1:初始化定义列表white=[]black=[]height=img_thre.shape[0]width=img_thre.shape[1] white_max=0black_max=0# 3-2:计算每一列的黑白像素总和for i in range(width):line_white=0line_black=0for j in range(height):if img_thre[j][i]==255:line_white+=1if img_thre[j][i]==0:line_black+=1white_max=max(white_max,line_white)black_max=max(black_max,line_black)white.append(line_white)black.append(line_black)# 3-3:arg为true表示黑底白字 , False为白底黑字arg=Trueif black_max4.4 第4步:定义函数 , 找结尾end , 这个时候就需要第3步的相关参数


推荐阅读