总结一下大作业罢

总算是告一段落了,累似我了
先介绍一下:这玩意是自动买水果柜子,和学校楼下的小嗨机差不多。扫码登录后点击开门。然后就开门了。然后是用手从里面拿水果出来并关门,然后识别你拿出来了什么东西,生成订单上传到后端上。

整体架构

flowchart LR springboot --> |传递数据库信息|vue vue -->|发出请求|springboot vue --> |可视化信息|用户 树莓派 --> |http|springboot springboot --> |阿里云mqtt|树莓派

树莓派实现

订单计算步骤

flowchart TD 等待后端信息 --> |结构为command:...,data:...|id1{命令是否为open} id1{命令是否为open} --> |是|开始录像 检测到关门-->结束录像 开始录像 -->结束录像 结束录像-->选取视频的首帧和尾帧 选取视频的首帧和尾帧-->计算售出的水果数量和种类 YOLO-->计算售出的水果数量和种类 计算售出的水果数量和种类-->生成订单 生成订单-->上传到后端

水果异常检测

flowchart TD 定时触发 --> 获取传感器信息 获取传感器信息 -->|硫化氢、烟雾、温湿度|sklearn推理 sklearn推理-->|含量是否有问题|上传到后端 定时触发-->YOLO YOLO-->|水果画框后裁剪的图像|vgg16 vgg16-->|是否有腐烂位置|上传到后端

技术栈

前端

基于vue3框架,使用element-plus组件库。

后端

基于javaspringboot框架,mysql数据库,redis,mybatis-plus。

边端

  1. 视觉模型为yolov11,转换为onnx格式,使用opencv-python部署
   class Yolofruit():
    def __init__(self):
        modelpath =yaml.safe_load(open('./init.yaml', 'r'))['YOLO']['model_path']
        Inshape =yaml.safe_load(open('./init.yaml', 'r'))['YOLO']['In_shape']
        self.net = cv2.dnn.readNetFromONNX(modelpath)
        self.in_h=Inshape[1]
        self.in_w=Inshape[2]
  
    def getPred(self,frame,conf=0.5,iou=0.45):
        blob=cv2.dnn.blobFromImage(frame,1/255.0,(self.in_h, self.in_w),(20,30,40),True,False)
        self.net.setInput(blob)
        pred:np.ndarray = self.net.forward()[0].T
        pred = detect_postprocess(pred,[self.in_w,self.in_h],frame.shape[0:2],conf,iou)
        return pred

    def draw(self,frame,preds):
        for pred in preds:
            cv2.rectangle(frame, (int(pred[0]),int(pred[1])), (int(pred[2]),int(pred[3])), colors[pred[4:].argmax()], 2)  # 添加颜色和线宽参数
            cv2.putText(frame, fruits[pred[4:].argmax()], (int(pred[0]), int(pred[1]) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, colors[pred[4:].argmax()], 2)
        return frame
  1. 信息接收的方式为阿里云物联网平台,调用库 linkkitpaho-mqtt实现,注意!paho-mqtt的版本不能大于1.6.1。
  2. 上传信息到后端的方式采用了库 requests,牛魔的不想用mqtt了,还是http简单爽。

tm我就该用websocket的

资源

  1. 阿里云物联网平台
  2. 阿里云ecs服务器2核2G
  3. 阿里云域名服务
  4. 七牛云对象存储
  5. 七牛云deepseek的api服务
  6. 宝塔面板部署服务

后台管理系统

库存管理

订单查询


销售统计

异常状态

实物图

没有这种东西,忘记拍了