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条件和循环的使用方法
Nov 01 Python
python实现的登录和操作开心网脚本分享
Jul 09 Python
python中的字典详细介绍
Sep 18 Python
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
Python读取指定日期邮件的实例
Feb 01 Python
python导入pandas具体步骤方法
Jun 23 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
python解决12306登录验证码的实现
Apr 18 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
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
跟老齐学Python之编写类之三子类
2014/10/11 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
python 如何调用 dubbo 接口
2020/09/24 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
网络书店创业计划书
2014/02/07 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
英语辞职信怎么写
2015/02/28 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
小学校长开学致辞
2015/07/29 职场文书
人民币使用说明书
2019/04/17 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
python分分钟绘制精美地图海报
2022/02/15 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL