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多进程同步Lock、Semaphore、Event实例
Nov 21 Python
Python中用altzone()方法处理时区的教程
May 22 Python
Python中Django 后台自定义表单控件
Mar 28 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
如何利用python给图片添加半透明水印
Sep 06 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
Python reduce函数作用及实例解析
May 08 Python
Python中and和or如何使用
May 28 Python
Python使用Matlab命令过程解析
Jun 04 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
python析构函数用法及注意事项
Jun 22 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模块 Memcached功能多于Memcache
2011/06/14 PHP
PHP中的替代语法简介
2014/08/22 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
详解JS函数重载
2014/12/04 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
jquery自定义表格样式
2015/11/23 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
解决layer.open后laydate失效的问题
2019/09/06 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
简单了解什么是神经网络
2017/12/23 Python
Python输入二维数组方法
2018/04/13 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
C#怎么让一个窗口居中显示?
2015/10/20 面试题
中英文自我评价语句
2013/12/20 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
学校春季防火方案
2014/06/08 职场文书
求职意向书
2014/07/29 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
管理人员岗位职责
2015/02/14 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL