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 相关文章推荐
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
python网络编程调用recv函数完整接收数据的三种方法
Mar 31 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 Python
wxPython实现带颜色的进度条
Nov 19 Python
Python命令行click参数用法解析
Dec 19 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
Opencv 图片的OCR识别的实战示例
Mar 02 Python
python中数组和列表的简单实例
Mar 25 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
图书管理程序(一)
2006/10/09 PHP
解决中英文字符串长度问题函数
2007/01/16 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
php实现URL加密解密的方法
2016/11/17 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
Python实现曲线点抽稀算法的示例
2017/10/12 Python
python实现图书管理系统
2018/03/12 Python
python获取中文字符串长度的方法
2018/11/14 Python
浅析python的优势和不足之处
2018/11/20 Python
python实现归并排序算法
2018/11/22 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
小学教师师德感言
2014/02/10 职场文书
公务员年度个人总结
2015/02/12 职场文书
亮剑观后感300字
2015/06/05 职场文书
签字仪式主持词
2015/07/03 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python