
1. 项目概述SpringBootVue电商客流统计系统这个基于SpringBoot和Vue的电商客流统计系统是我去年为一家连锁零售客户开发的商业解决方案。系统通过计算机视觉技术实时统计店铺客流量帮助商家分析顾客行为模式优化店铺运营策略。整套系统采用前后端分离架构后端使用SpringBoot提供RESTful API前端采用Vue.js构建交互界面数据存储使用MySQLRedis组合方案。提示客流统计系统不同于简单的访问量统计它需要处理实时视频流数据对系统性能和稳定性要求较高2. 技术架构设计2.1 后端技术选型选择SpringBoot 2.7作为后端框架主要基于以下考虑自动配置特性简化了视频处理组件的集成内嵌Tomcat支持高并发请求处理完善的监控端点便于系统运维核心依赖包括dependency groupIdorg.opencv/groupId artifactIdopencv-java/artifactId version4.5.5/version /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-websocket/artifactId /dependency2.2 前端技术方案Vue 3组合式API更适合处理实时数据流展示使用WebSocket接收后端推送的客流数据ECharts实现热力图和时段分布图Element Plus组件库构建管理界面关键实现代码// 实时客流数据显示组件 const count ref(0) socket.on(customer_flow, data { count.value data.realTimeCount })3. 核心功能实现3.1 视频流处理模块采用OpenCV进行人脸检测和跟踪通过RTSP协议获取摄像头视频流使用Haar级联分类器检测人脸基于KCF算法实现多目标跟踪应用匈牙利算法解决ID切换问题// Java版人脸检测代码片段 Mat frame new Mat(); VideoCapture capture new VideoCapture(rtspUrl); while(capture.read(frame)){ CascadeClassifier faceDetector new CascadeClassifier(haarcascade_frontalface_default.xml); MatOfRect faceDetections new MatOfRect(); faceDetector.detectMultiScale(frame, faceDetections); // 统计检测到的人脸数量 currentCount faceDetections.toArray().length; }3.2 数据存储设计采用两级存储策略Redis存储实时统计数据过期时间15分钟MySQL存储历史聚合数据按小时/天聚合表结构设计示例CREATE TABLE customer_flow ( id BIGINT PRIMARY KEY AUTO_INCREMENT, store_id VARCHAR(20) NOT NULL, count INT NOT NULL, record_time DATETIME NOT NULL, device_id VARCHAR(50) ) ENGINEInnoDB;4. 系统部署与优化4.1 性能调优方案针对视频处理的高CPU消耗问题使用FFmpeg进行视频流转码和降分辨率采用多线程处理每个摄像头独立线程设置检测间隔默认500ms使用JNI调用C实现的优化算法4.2 容器化部署Docker部署方案要点每个微服务独立容器使用Nginx负载均衡配置资源限制防止OOM日志统一收集到ELK示例DockerfileFROM openjdk:11-jre COPY target/customer-flow.jar /app.jar ENTRYPOINT [java,-Xmx1024m,-Djava.security.egdfile:/dev/./urandom,-jar,/app.jar]5. 常见问题解决方案5.1 视频流断连处理实现自动重连机制心跳检测每30秒指数退避重试策略异常状态通知备用流地址切换5.2 计数误差修正采用以下策略提高准确性设置最小停留时间阈值默认3秒排除店员等固定人员使用区域检测限定统计范围定期人工校准6. 扩展功能实现6.1 热力图生成基于位置数据的实现方案使用OpenCV的cv2.applyColorMap前端通过Canvas渲染数据聚合粒度可配置支持时间范围选择6.2 移动端适配针对门店经理的移动端功能微信小程序实时通知简单的数据看板异常客流预警交接班数据对比这套系统在实际运行中达到了95%以上的计数准确率帮助客户优化了排班方案和促销策略。最大的收获是认识到边缘计算设备的重要性后续考虑将部分检测逻辑下放到摄像头端处理