⼀.车牌识别系统的⽤途与技术
车牌识别系统(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])
new = image[y:y+h, x:x+w]
gray = cv2.py(), 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.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)
本代码中的图⽚路径根据读者情况随机应变。
三.结果展⽰
以上就是车牌识别代码,愿有所帮助,
不是为了优秀⽽优秀,不需要被别⼈定义,因为我有my logo。