python+OpenCV实现车牌号码识别


Posted in Python onNovember 08, 2019

基于python+OpenCV的车牌号码识别,供大家参考,具体内容如下

车牌识别行业已具备一定的市场规模,在电子警察、公路卡口、停车场、商业管理、汽修服务等领域已取得了部分应用。一个典型的车辆牌照识别系统一般包括以下4个部分:车辆图像获取、车牌定位、车牌字符分割和车牌字符识别

1、车牌定位的主要工作是从获取的车辆图像中找到汽车牌照所在位置,并把车牌从该区域中准确地分割出来
这里所采用的是利用车牌的颜色(黄色、蓝色、绿色) 来进行定位

#定位车牌
def color_position(img,output_path):
 colors = [([26,43,46], [34,255,255]), # 黄色
    ([100,43,46], [124,255,255]), # 蓝色
    ([35, 43, 46], [77, 255, 255]) # 绿色
    ]
 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
 for (lower, upper) in colors:
  lower = np.array(lower, dtype="uint8") # 颜色下限
  upper = np.array(upper, dtype="uint8") # 颜色上限

  # 根据阈值找到对应的颜色
  mask = cv2.inRange(hsv, lowerb=lower, upperb=upper)
  output = cv2.bitwise_and(img, img, mask=mask)
  k = mark_zone_color(output,output_path)
  if k==1:
   return 1
  # 展示图片
  #cv2.imshow("image", img)
  #cv2.imshow("image-color", output)
  #cv2.waitKey(0)
 return 0

python+OpenCV实现车牌号码识别

2、将车牌提取出来

def mark_zone_color(src_img,output_img):
 #根据颜色在原始图像上标记
 #转灰度
 gray = cv2.cvtColor(src_img,cv2.COLOR_BGR2GRAY)

 #图像二值化
 ret,binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY)
 #轮廓检测
 x,contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
 #drawing = img
 #cv2.drawContours(drawing, contours, -1, (0, 0, 255), 3) # 填充轮廓颜色
 #cv2.imshow('drawing', drawing)
 #cv2.waitKey(0)
 #print(contours)
 
 temp_contours = [] # 存储合理的轮廓
 car_plates=[]
 if len(contours)>0:
  for contour in contours:
   if cv2.contourArea(contour) > Min_Area:
    temp_contours.append(contour)
   car_plates = []
   for temp_contour in temp_contours:
    rect_tupple = cv2.minAreaRect(temp_contour)
    rect_width, rect_height = rect_tupple[1]
    if rect_width < rect_height:
     rect_width, rect_height = rect_height, rect_width
    aspect_ratio = rect_width / rect_height
    # 车牌正常情况下宽高比在2 - 5.5之间
    if aspect_ratio > 2 and aspect_ratio < 5.5:
     car_plates.append(temp_contour)
     rect_vertices = cv2.boxPoints(rect_tupple)
     rect_vertices = np.int0(rect_vertices)
   if len(car_plates)==1:
    oldimg = cv2.drawContours(img, [rect_vertices], -1, (0, 0, 255), 2)
    #cv2.imshow("che pai ding wei", oldimg)
    # print(rect_tupple)
    break

 #把车牌号截取出来
 if len(car_plates)==1:
  for car_plate in car_plates:
   row_min,col_min = np.min(car_plate[:,0,:],axis=0)
   row_max,col_max = np.max(car_plate[:,0,:],axis=0)
   cv2.rectangle(img,(row_min,col_min),(row_max,col_max),(0,255,0),2)
   card_img = img[col_min:col_max,row_min:row_max,:]
   cv2.imshow("img",img)
  cv2.imwrite(output_img + '/' + 'card_img' + '.jpg',card_img)
  cv2.imshow("card_img.",card_img)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  return 1
 return 0

python+OpenCV实现车牌号码识别

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中实现参数类型检查的简单方法
Apr 21 Python
详解使用Python处理文件目录的相关方法
Oct 16 Python
python数字图像处理之高级滤波代码详解
Nov 23 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
python 多个参数不为空校验方法
Feb 14 Python
python selenium循环登陆网站的实现
Nov 04 Python
通过实例解析Python调用json模块
Dec 11 Python
Python调用JavaScript代码的方法
Oct 27 Python
Python系统公网私网流量监控实现流程
Nov 23 Python
python使用smtplib模块发送邮件
Dec 17 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
python实现飞机大战小游戏
Nov 08 #Python
python 基于dlib库的人脸检测的实现
Nov 08 #Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 #Python
python实现身份证实名认证的方法实例
Nov 08 #Python
Python Django框架模板渲染功能示例
Nov 08 #Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 #Python
Django框架下静态模板的继承操作示例
Nov 08 #Python
You might like
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
syntaxhighlighter 使用方法
2007/07/02 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
nodejs动态创建二维码的方法
2017/08/12 NodeJs
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Python使用functools实现注解同步方法
2018/02/06 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Python实现京东抢秒杀功能
2021/01/25 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
SQL面试题
2013/12/09 面试题
创业者是否需要商业计划书?
2014/02/07 职场文书
《中华少年》教学反思
2014/02/15 职场文书
科学发展观标语
2014/10/08 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2015年入党决心书
2015/02/05 职场文书
综合测评个人总结
2015/03/03 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
党支部季度考核意见
2015/06/02 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书