大家好,我是java1234_小锋老师,最近写了一套基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程,持续更新中,计划月底更新完,感谢支持。
视频在线地址:
https://www.bilibili.com/video/BV1BdUnBLE6N/
课程简介:

本课程采用主流的Python技术栈实现,分两套系统讲解,一套是专门讲PyTorch2卷积神经网络CNN训练模型,识别车牌,当然实现过程中还用到OpenCV实现图像格式转换,裁剪,大小缩放等。另外一套是基于前面Django+Vue通用权限系统基础上,加了车辆识别业务模型,Mysql8数据库,Django后端,Vue前端,后端集成训练好的模型,实现车牌识别。
基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程 - 车牌矩阵定位
前面我们做了图像预处理,接下来可以进行车牌矩阵定位:
def verify_scale(rotate_rect):
return True
def img_transform(rotate_rect, orig_img):
return None
def locate_carPlate(orig_img, pred_img):
carPlate_list = [] # 车牌列表
temp1_orig_img = orig_img.copy() # 拷贝图片 调试用
temp2_orig_img = orig_img.copy() # 拷贝图片 调试用
# 从二值图像中查找轮廓的函数
# cv2.RETR_EXTERNAL参数表示只检索最外层轮廓,
# cv2.CHAIN_APPROX_SIMPLE参数表示压缩轮廓的水平、垂直和对角线部分,只保留端点。
# 函数返回轮廓列表contours和层级信息heriachy,用于后续的车牌定位处理。
contours, hierarchy = cv2.findContours(pred_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for i, contour in enumerate(contours):
"""
这段代码的功能是在调试图像上绘制检测到的轮廓。具体来说:
cv2.drawContours()函数用于在temp1_orig_img图像上绘制轮廓
contours是要绘制的轮廓点集
i表示当前绘制第几个轮廓
(0, 255, 255)是绘制的颜色(青色)
2是线条粗细度
这样可以可视化显示所有检测到的车牌候选区域轮廓,便于调试观察。
"""
cv2.drawContours(temp1_orig_img, contours, i, (0, 255, 255), 2)
"""
获取当前轮廓的最小外接矩形,cv2.minAreaRect()函数会计算能够完全包围轮廓的最小面积矩形,
并返回一个包含矩形中心点坐标、宽度高度和旋转角度的元组,
用于后续的车牌定位和矫正处理。
"""
rotate_rect = cv2.minAreaRect(contour)
# 根据矩形面积大小和长宽比判断是否是车牌
if verify_scale(rotate_rect):
# 裁剪车牌并且位置矫正
car_plate = img_transform(rotate_rect, temp2_orig_img)
cv2.imwrite('process_img/transform_img.jpg', car_plate)
# 调整尺寸为后面CNN车牌识别做准备
car_plate = cv2.resize(car_plate, (car_plate_w, car_plate_h))
cv2.imwrite('process_img/resize_img.jpg', car_plate)
carPlate_list.append(car_plate)
return carPlate_list
if __name__ == '__main__':
car_plate_w, car_plate_h = 136, 36 # 车牌宽高
char_w, char_h = 20, 20 # 字符宽高
char_model_path = "char.pth"
test_images_root = 'images/test/' # 测试图片路径
files = list_all_files(test_images_root)
files.sort()
for file in files:
img = cv2.imread(file) # 读取图片
pred_img = pre_process(img) # 预处理图片
locate_carPlate(img, pred_img) # 车牌定位