YOLOv5+Web车牌识别系统 人工智能+YOLO AI对话功 能 用户登录注册 视频 图片识别 AI对话功能 识别结果保存与导出 YOLOV5车牌识别检测系统

📅 2026/7/8 14:04:21
YOLOv5+Web车牌识别系统 人工智能+YOLO AI对话功 能 用户登录注册 视频 图片识别 AI对话功能 识别结果保存与导出 YOLOV5车牌识别检测系统
深度学习-YOLOv5Web车牌识别系统功能点用户登录注册视频 图片识别AI对话功能识别结果保存与导出1YOLOv5Web车牌识别系统 完整实现方案一、系统功能架构模块核心功能用户模块登录、注册、权限控制识别模块图片车牌检测OCR识别、视频流实时识别结果管理识别记录存储、CSV导出、历史查询扩展功能AI对话助手解答识别问题、提供使用指导二、环境依赖安装# 后端依赖pipinstallflask flask_sqlalchemy flask_login ultralytics paddleocr opencv-python pandas# 前端依赖Node.js环境npminstallvue3 element-plus axios三、后端核心代码实现Flask1. 项目结构license_recognition_system/ ├── app.py # 主程序入口 ├── models/ │ ├── user.py # 用户模型 │ └── record.py # 识别记录模型 ├── routes/ │ ├── auth.py # 登录注册路由 │ ├── recognition.py # 车牌识别路由 │ └── ai_chat.py # AI对话路由 ├── utils/ │ ├── license_detector.py # YOLOv5OCR识别工具 │ └── file_handler.py # 文件上传/导出工具 └── static/ └── uploads/ # 上传文件存储目录2. 主程序入口app.pyfromflaskimportFlaskfromflask_sqlalchemyimportSQLAlchemyfromflask_loginimportLoginManagerfromroutes.authimportauth_bpfromroutes.recognitionimportrec_bpfromroutes.ai_chatimportai_bp appFlask(__name__)app.config[SECRET_KEY]your_secret_keyapp.config[SQLALCHEMY_DATABASE_URI]sqlite:///license.dbapp.config[UPLOAD_FOLDER]static/uploadsdbSQLAlchemy(app)login_managerLoginManager(app)login_manager.login_viewauth.login# 注册蓝图app.register_blueprint(auth_bp,url_prefix/api/auth)app.register_blueprint(rec_bp,url_prefix/api/recognition)app.register_blueprint(ai_bp,url_prefix/api/ai)if__name____main__:app.run(debugTrue)3. 用户与记录模型models/__init__.pyfromappimportdbfromflask_loginimportUserMixinfromdatetimeimportdatetimeclassUser(UserMixin,db.Model):iddb.Column(db.Integer,primary_keyTrue)usernamedb.Column(db.String(50),uniqueTrue,nullableFalse)passworddb.Column(db.String(100),nullableFalse)recordsdb.relationship(RecognitionRecord,backrefuser,lazyTrue)classRecognitionRecord(db.Model):iddb.Column(db.Integer,primary_keyTrue)user_iddb.Column(db.Integer,db.ForeignKey(user.id),nullableFalse)file_namedb.Column(db.String(100),nullableFalse)license_platedb.Column(db.String(20),nullableFalse)plate_colordb.Column(db.String(10),nullableFalse)confidencedb.Column(db.Float,nullableFalse)create_timedb.Column(db.DateTime,defaultdatetime.now)4. 车牌识别工具utils/license_detector.pyfromultralyticsimportYOLOfrompaddleocrimportPaddleOCRimportcv2importnumpyasnpclassLicensePlateDetector:def__init__(self,model_pathbest.pt):self.modelYOLO(model_path)self.ocrPaddleOCR(use_angle_clsTrue,langch,show_logFalse)defdetect_license(self,image_path):# YOLOv5检测车牌位置resultsself.model(image_path,conf0.5)imgcv2.imread(image_path)forresultinresults:forboxinresult.boxes:x1,y1,x2,y2map(int,box.xyxy[0])plate_roiimg[y1:y2,x1:x2]# OCR识别车牌文字ocr_resultself.ocr.ocr(plate_roi,clsTrue)ifocr_resultandocr_result[0]:license_numocr_result[0][0][1][0]confidenceocr_result[0][0][1][1]# 识别车牌颜色简化实现hsvcv2.cvtColor(plate_roi,cv2.COLOR_BGR2HSV)color蓝色ifself.is_blue_plate(hsv)else绿色returnlicense_num,color,confidencereturnNone,None,0.0defis_blue_plate(self,hsv_img):# 简化的车牌颜色判断blue_lowernp.array([100,43,46])blue_uppernp.array([124,255,255])maskcv2.inRange(hsv_img,blue_lower,blue_upper)returncv2.countNonZero(mask)10005. 识别路由routes/recognition.pyfromflaskimportBlueprint,request,jsonify,current_appfromflask_loginimportlogin_required,current_userfromwerkzeug.utilsimportsecure_filenamefrommodelsimportdb,RecognitionRecordfromutils.license_detectorimportLicensePlateDetectorimportosimportpandasaspd rec_bpBlueprint(recognition,__name__)detectorLicensePlateDetector()rec_bp.route(/upload/image,methods[POST])login_requireddefupload_image():iffilenotinrequest.files:returnjsonify({code:400,msg:未上传文件})filerequest.files[file]filenamesecure_filename(file.filename)save_pathos.path.join(current_app.config[UPLOAD_FOLDER],filename)file.save(save_path)# 车牌识别license_num,color,confidencedetector.detect_license(save_path)ifnotlicense_num:returnjsonify({code:400,msg:未检测到车牌})# 保存记录recordRecognitionRecord(user_idcurrent_user.id,file_namefilename,license_platelicense_num,plate_colorcolor,confidenceconfidence)db.session.add(record)db.session.commit()returnjsonify({code:200,data:{license_num:license_num,color:color,confidence:confidence}})rec_bp.route(/records,methods[GET])login_requireddefget_records():recordsRecognitionRecord.query.filter_by(user_idcurrent_user.id).all()data[{id:r.id,file_name:r.file_name,license_plate:r.license_plate,plate_color:r.plate_color,confidence:r.confidence,create_time:r.create_time.strftime(%Y-%m-%d %H:%M:%S)}forrinrecords]returnjsonify({code:200,data:data})rec_bp.route(/export,methods[GET])login_requireddefexport_records():recordsRecognitionRecord.query.filter_by(user_idcurrent_user.id).all()dfpd.DataFrame([{文件名:r.file_name,车牌号码:r.license_plate,车牌颜色:r.plate_color,置信度:r.confidence,识别时间:r.create_time.strftime(%Y-%m-%d %H:%M:%S)}forrinrecords])csv_pathos.path.join(current_app.config[UPLOAD_FOLDER],records.csv)df.to_csv(csv_path,indexFalse,encodingutf-8-sig)returnjsonify({code:200,url:/static/uploads/records.csv})四、前端核心代码实现Vue3Element Plus1. 登录注册页面src/views/Login.vuetemplate div classlogin-container div classlogin-box h2用户登录/h2 el-form :modelform label-width80px el-form-item label用户名 el-input v-modelform.username placeholder请输入用户名/el-input /el-form-item el-form-item label密码 el-input v-modelform.password typepassword placeholder请输入密码/el-input /el-form-item el-form-item el-button typeprimary clickhandleLogin登录/el-button el-button clickgoRegister注册新账号/el-button /el-form-item /el-form /div /div /template script setup import { ref } from vue import { useRouter } from vue-router import axios from axios const router useRouter() const form ref({ username: , password: }) const handleLogin async () { const res await axios.post(/api/auth/login, form.value) if (res.data.code 200) { localStorage.setItem(token, res.data.token) router.push(/home) } } const goRegister () { router.push(/register) } /script2. 图片/视频识别页面src/views/Recognition.vuetemplate div classrecognition-container el-card title图片检测 el-upload action/api/recognition/upload/image :headersheaders :on-successhandleSuccess list-typepicture el-button typeprimary上传图片/el-button /el-upload div v-ifresult p车牌号码: {{ result.license_num }}/p p车牌颜色: {{ result.color }}/p p置信度: {{ (result.confidence*100).toFixed(2) }}%/p /div /el-card el-card title视频检测 stylemargin-top:20px el-upload action/api/recognition/upload/video :headersheaders list-typevideo el-button typesuccess上传视频/el-button /el-upload /el-card /div /template script setup import { ref } from vue const headers { Authorization: Bearer ${localStorage.getItem(token)} } const result ref(null) const handleSuccess (res) { if (res.code 200) { result.value res.data } } /script3. 历史记录与导出页面src/views/Records.vuetemplate div classrecords-container el-button typesuccess clickexportCSV下载CSV/el-button el-table :datarecords border stylemargin-top:20px el-table-column propfile_name label图片名/el-table-column el-table-column proplicense_plate label车牌号码/el-table-column el-table-column propplate_color label车牌颜色/el-table-column el-table-column propconfidence label置信度 template #defaultscope {{ (scope.row.confidence*100).toFixed(2) }}% /template /el-table-column el-table-column propcreate_time label识别时间/el-table-column /el-table /div /template script setup import { ref, onMounted } from vue import axios from axios const records ref([]) const headers { Authorization: Bearer ${localStorage.getItem(token)} } onMounted(async () { const res await axios.get(/api/recognition/records, { headers }) records.value res.data.data }) const exportCSV async () { const res await axios.get(/api/recognition/export, { headers }) window.open(res.data.url) } /script五、AI对话助手功能实现简化版1. 对话路由routes/ai_chat.pyfromflaskimportBlueprint,request,jsonifyimportrandom ai_bpBlueprint(ai_chat,__name__)# 预设回复库replies{车牌识别:系统使用YOLOv5检测车牌位置结合PaddleOCR识别文字支持蓝/绿牌识别。,置信度:置信度表示识别结果的可信度越高代表结果越可靠。,使用方法:您可以上传图片或视频系统会自动识别车牌并保存记录。}ai_bp.route(/chat,methods[POST])defchat():questionrequest.json.get(question,)forkey,replyinreplies.items():ifkeyinquestion:returnjsonify({code:200,reply:reply})returnjsonify({code:200,reply:您的问题我暂时无法回答您可以咨询车牌识别相关问题。})六、部署与使用说明后端启动python app.py前端启动npmrun serve使用流程注册账号并登录系统上传图片/视频进行车牌识别在历史记录中查看、导出识别结果使用AI助手咨询识别相关问题。七、系统扩展建议可接入OpenAI/DeepSeek API升级AI助手为智能对话模式可增加实时摄像头流识别功能对接监控设备可增加车牌黑白名单管理实现自动告警功能。