基于计算机视觉完成车牌检测识别出的车牌用方框圈出来 代码
时间: 2024-03-21 15:41:46 浏览: 56
基于Opencv+python的车牌识别系统代码(下载即用)
5星 · 资源好评率100%
以下是基于Python和OpenCV库实现的车牌检测和识别代码:
```python
import cv2
# 车牌检测模型路径
cascade_path = 'haarcascade_chinese.xml'
# 车牌识别模型路径
ocr_path = 'ocr_plate_all_gru.h5'
# 载入车牌检测模型
cascade = cv2.CascadeClassifier(cascade_path)
# 载入车牌识别模型
ocr_plate = keras.models.load_model(ocr_path)
# 读取图片
img = cv2.imread('car.jpg')
# 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 车牌检测
plates = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 车牌识别
for (x, y, w, h) in plates:
plate_img = img[y:y + h, x:x + w]
plate_gray = cv2.cvtColor(plate_img, cv2.COLOR_BGR2GRAY)
plate_gray = cv2.resize(plate_gray, (160, 40))
plate_gray = plate_gray / 255.0
plate_gray = plate_gray.reshape((1, 40, 160, 1))
plate_pred = ocr_plate.predict(plate_gray)
plate_text = keras.backend.get_value(keras.backend.ctc_decode(plate_pred, input_length=np.ones(plate_pred.shape[0]) * plate_pred.shape[1], greedy=True)[0][0])
plate_text = ''.join([chr(x) for x in plate_text[0]])
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
cv2.putText(img, plate_text, (x, y - 15), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们首先载入了车牌检测和识别的模型,然后读取了一张待处理的图片。接着,我们将图片进行灰度化,然后使用CascadeClassifier进行车牌检测。对于检测到的每一个车牌,我们将其裁剪出来,然后进行灰度化、归一化和识别操作。最后,我们在原图上用方框圈出车牌,然后在车牌上显示识别结果。
阅读全文