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中操作时间之tzset()方法的使用教程
May 22 Python
Python3实现Web网页图片下载
Jan 28 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
Python2与Python3的区别点整理
Dec 12 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
Python 发送邮件方法总结
Aug 10 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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
第五节 克隆 [5]
2006/10/09 PHP
php的memcached客户端memcached
2011/06/14 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
document.forms用法示例介绍
2014/06/26 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python错误处理操作示例
2018/07/18 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
个人自我剖析材料
2014/02/07 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
CAD实训总结范文
2015/08/03 职场文书
团干部培训班心得体会
2016/01/06 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书