最近在学计算机视觉,发现网上大部分车牌识别教程要么只讲模型原理、要么只贴一段调用代码,真正能完整跑起来的项目少之又少。于是我用Python从零搭了一套前后端联动的车牌识别系统,今天把整套代码、思路、踩过的坑都无偿分享给大家,希望对同样在入门Python+CV的同学有帮助。先说清楚:整套系统从后端到识别引擎,100%用Python写的,没有 Java没有C++,会Python基础语法就能看懂、能改。这也是我选Python的原因——上手快、生态全、AI/计算机视觉库最丰富。
1.Django 3.2.18(Python Web 框架,自带后台管理)数据库;3.HyperLPR(一个纯 Python 的中文车牌识别库,模型权重已经训练好)图像处理;4.OpenCV-Python + NumPy(Python 科学计算标配)前端;5.Layui + ECharts(图表)+ 中国地图可视化;整套依赖一句命令搞定,Python 3.8 以上都能跑:pip install django mysqlclient opencv-python numpy pillow hyperlpr
系统的「车牌识别」页面,三个按钮覆盖了所有使用场景:(1)图片上传识别:选一张含车牌的图片,2 秒内返回车牌号 + 置信度摄像头实时识别;(2)调用浏览器 getUserMedia,每秒自动抽帧上传识别,识别到就停视频导入识别;(3)选个视频文件,每 0.5 秒抽一帧,把所有不重复车牌都收下来;后端接收图片的 Python 视图长这样,Django 帮你把文件流都处理好:def predict(request): image = request.FILES.get('image') file_path = save_file(image) # 存到 static/uploadImg/ number, score = main(file_path) # 调识别主流程 if number is None: return JsonResponse({"error": 1, "message": "未识别到车牌"}) # 识别成功就入库 Car.objects.create(name=image.name, license_plate=number, ...) return JsonResponse({"number": number, 'score': score, 'error': 0})
摄像头那段的核心 JS 很巧妙,用 setInterval + canvas.toBlob 实现低开销抽帧:recognitionInterval = setInterval(function() { ctx.drawImage(videoElement, 0, 0, canvas.width, canvas.height); canvas.toBlob(function (blob) { var formData = new FormData(); formData.append('image', blob, 'camera_capture_' + Date.now() + '.jpg'); $.ajax({ url: "/predict", data: formData, processData: false, contentType: false }); }, 'image/jpeg', 0.9);}, 1000);
2. 车牌管理 + 数据分析(Django ORM 一行搞定)(1)analysis.html 的饼图 + 柱状图,按颜色和省份统计:(2)map.html 中国地图,每个省份深浅代表识别数量:(3)pics.html 车牌管理表格,每页 20 条,按时间倒序:管理页我刚做了三个优化,分享给大家当模板抄——这就是 Python Django ORM 的优雅之处,一行代码搞定复杂排序:results = Car.objects.all().order_by('-create_time', '-id')Car.objects.filter(name__contains=keyword).order_by('-create_time', '-id')
统计每个省份识别了多少辆,Django 的 annotate 一行搞定:results = Car.objects.values('province').annotate(myCount=Count('province'))
3. 识别引擎:多策略+严格校验(纯 Python)后端识别不是简单调一下 HyperLPR 就完事,而是六层策略+投票+格式校验,全部用Python实现:策略2:CLAHE 增强后检测(OpenCV 的 cv2.createCLAHE);策略4:HSV 颜色掩膜找车牌底色(蓝/绿/黄);整套项目源码、数据库 SQL、前端模板、训练好的模型权重,全部无偿分享给大家,不收一分钱。拿去改毕设、做课程项目、自己学习都行。需要源码的同学,关注公众号私信联系我即可获取完整工程压缩包。如果想更好的学懂Python,我推荐大家阅读《Python入门教程》:Python 入门经典,看完你就能看懂我这套系统的每一行