Python-车牌识别

一.车牌识别系统的用途与技术

车牌识别系统(Vehicle License Plate Recognition,VLPR) 是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别在高速公路车辆管理中得到广泛应用,电子收费(ETC)系统中,也是结合DSRC技术识别车辆身份的主要手段。

车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号、颜色等信息,目前最新的技术水平为字母和数字的识别率可达到99.7%,汉字的识别率可达到99%。

在停车场管理中,车牌识别技术也是识别车辆身份的主要手段。在深圳市公安局建设的《停车库(场)车辆图像和号牌信息采集与传输系统技术要求》中,车牌识别技术成为车辆身份识别的主要手段。

车牌识别技术结合电子不停车收费系统(ETC)识别车辆,过往车辆通过道口时无须停车,即能够实现车辆身份自动识别、自动收费。在车场管理中,为提高出入口车辆通行效率,车牌识别针对无需收停车费的车辆(如月卡车、内部免费通行车辆),建设无人值守的快速通道,免取卡、不停车的出入体验,正改变出入停车场的管理模式。

二.运用Python代码完成车牌识别

1.将给定车牌圈出,并保存在文件夹中
2.将车牌中的数字和文字圈出、并保存在文件夹中

思路分析:
对图片进行一些预处理,包括灰度化、高斯平滑、中值滤波、Sobel算子边缘检测等等。

对预处理后的图像进行轮廓查找,然后根据一些RGB参数判断该轮廓是否为车牌轮廓。

import cv2
import numpy as np
image = cv2.imread('C:\\Users\\sunyu\\Desktop\\sy.jpg')
cv2.imshow("image", image)
hsv_img = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower = np.array([110, 100, 150])
upper = np.array([125, 200, 255])
mask = cv2.inRange(hsv_img, lowerb=lower, upperb=upper)
kernel = np.ones((5,5), np.uint8)
mask = cv2.dilate(mask, kernel, iterations=10)
cv2.imshow("mask", mask)
contours, hier = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
#cv2.waitKey(0) 
for c in contours:
    # find bounding box coordinates
    # 现计算出一个简单的边界框
    x, y, w, h = cv2.boundingRect(c)   # 将轮廓信息转换成(x, y)坐标,并加上矩形的高度和宽度
    if w < 2*h:
        continue
    #cv2.imwrite('con'+str(index)+'.jpg', result[y:y+h, x:x+w])
    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)  # 画出矩形
    new = image[y:y+h, x:x+w]
gray = cv2.cvtColor(new.copy(), cv2.COLOR_BGR2GRAY)           # 灰度图
ret, thresh = cv2.threshold(gray, 160, 255, cv2.THRESH_BINARY)   # 阈值分割
contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

index = 0
for c in contours:
    # find bounding box coordinates
    # 现计算出一个简单的边界框
    x, y, w, h = cv2.boundingRect(c)   # 将轮廓信息转换成(x, y)坐标,并加上矩形的高度和宽度
    if w > 40:
        continue
    index = index+1
    cv2.rectangle(new, (x, y), (x+w, y+h), (0, 255, 0), 2)  # 画出矩形
    cv2.imwrite('C:\\Users\\sunyu\\Desktop\\pi\\s' + str(index)+'.jpg',new)
cv2.imshow('new', new)
cv2.imwrite('C:\\Users\\sunyu\\Desktop\\pi\\s.jpg',new)
cv2.waitKey(0)

本代码中的图片路径根据读者情况随机应变。

三.结果展示

Python-车牌识别_第1张图片
Python-车牌识别_第2张图片
Python-车牌识别_第3张图片
Python-车牌识别_第4张图片
在这里插入图片描述
Python-车牌识别_第5张图片

以上就是车牌识别代码,愿有所帮助,

不是为了优秀而优秀,不需要被别人定义,因为我有my logo。

2019.12.06
22时50分

你可能感兴趣的:(程序设计,Python)