基于yolov8+flask搭建一个web版本的网页模型预测系统

测试环境:

anaconda3+python3.8

torch==1.9.0+cu111

ultralytics==8.2.2

首先我们将训练好的权重放在weights目录下面

并将名字改成yolov8n.pt,如果不想改可以在代码app.py都把路径改过来即可。然后我们打开

python app.py之后看到

我们点击选择文件支持图片或者视频文件,建议视频文件不要太大,支持mp4格式视频。点击upload即可等待出结果

 源码下载地址:https://download.csdn.net/download/FL1623863129/89315318

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
yolov8模型可以通过web部署来实现在线目标检测和分割。以下是yolov8模型部署到web端的步骤: 1. 准备模型文件和权重文件,可以通过yolov8系列的训练教程得到。 2. 安装必要的Python库,例如Flask、OpenCV等。 3. 编写Flask应用程序,实现模型的加载和推理功能。可以使用OpenCV库读取图像,然后调用模型进行目标检测和分割,最后将结果返回给前端。 4. 编写前端界面,可以使用HTML、CSS和JavaScript等技术实现。可以使用Ajax技术将图像上传到后端进行处理,并将处理结果显示在前端界面上。 下面是一个简单的yolov8模型部署到web端的示例代码: ```python # 导入必要的库 from flask import Flask, request, jsonify import cv2 import numpy as np # 加载模型和权重文件 net = cv2.dnn.readNetFromDarknet('yolov8.cfg', 'yolov8.weights') # 定义Flask应用程序 app = Flask(__name__) # 定义处理图像的函数 def process_image(image): # 调整图像大小 resized_image = cv2.resize(image, (416, 416)) # 将图像转换为blob格式 blob = cv2.dnn.blobFromImage(resized_image, 1/255.0, (416, 416), swapRB=True, crop=False) # 设置网络的输入 net.setInput(blob) # 进行前向推理 outputs = net.forward() # 解析输出结果 boxes, confidences, class_ids = [], [], [] for output in outputs: for detection in output: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x, center_y, width, height = list(map(int, detection[0:4] * [image.shape[1], image.shape[0], image.shape[1], image.shape[0]])) x, y = center_x - width // 2, center_y - height // 2 boxes.append([x, y, width, height]) confidences.append(float(confidence)) class_ids.append(class_id) # 进行非极大值抑制 indices = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) # 绘制检测结果 for i in indices: i = i[0] x, y, w, h = boxes[i] cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.putText(image, str(class_ids[i]), (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) # 返回处理后的图像 return image # 定义Flask路由 @app.route('/detect', methods=['POST']) def detect(): # 读取上传的图像 image = cv2.imdecode(np.fromstring(request.files['image'].read(), np.uint8), cv2.IMREAD_COLOR) # 处理图像 result = process_image(image) # 将处理结果转换为JPEG格式 _, jpeg = cv2.imencode('.jpg', result) # 返回处理结果 return jsonify({'image': jpeg.tobytes()}) # 启动Flask应用程序 if __name__ == '__main__': app.run() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值