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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
python实现sublime3的less编译插件示例
Apr 27 Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
python黑魔法之编码转换
Jan 25 Python
python实现SMTP邮件发送功能
Jun 16 Python
Python实现登录接口的示例代码
Jul 21 Python
Python学生信息管理系统修改版
Mar 13 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
Python面向对象程序设计类的封装与继承用法示例
Apr 12 Python
Python程序包的构建和发布过程示例详解
Jun 09 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
Python word文本自动化操作实现方法解析
Nov 05 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP四种基本排序算法示例
2015/04/09 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
JS 的应用开发初探(mootools)
2009/12/19 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
Django自定义manage命令实例代码
2018/02/11 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
python里反向传播算法详解
2020/11/22 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
学生思想表现的评语
2014/01/30 职场文书
店长职务说明书
2014/02/04 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL