在现代计算机视觉领域,YOLO(You Only Look Once)系列算法因其高效的实时目标检测能力而广泛应用。YOLOv5是其中较为流行的一个版本,它在速度和准确性上都有很好的表现。本教程将指导你如何使用Flask框架将YOLOv5部署到前端页面,实现视频中的目标检测。

环境准备

首先,你需要确保你的开发环境中安装了Python和Flask。如果你还没有安装,可以使用以下命令:

pip install flask
pip install torch torchvision torchaudio
pip install opencv-python
pip install numpy
pip install pyyaml

接下来,你需要克隆YOLOv5的代码库:

git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt

构建Flask应用

接下来,我们创建一个简单的Flask应用。首先,创建一个新的Python文件,例如app.py,并编写如下代码:

from flask import Flask, render_template, request, Response
import cv2
import torch

app = Flask(__name__)

# 加载YOLOv5模型
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')  # 使用YOLOv5s预训练模型

def generate_frames():
    cap = cv2.VideoCapture(0)  # 使用摄像头作为视频源
    while True:
        success, frame = cap.read()
        if not success:
            break

        # 进行目标检测
        results = model(frame)

        # 将检测结果渲染到帧上
        frame = results.render()[0]

        # 编码为JPEG格式
        ret, buffer = cv2.imencode('.jpg', frame)
        frame = buffer.tobytes()

        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/video_feed')
def video_feed():
    return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

创建HTML页面

然后,我们需要创建HTML文件来展示视频流。创建一个templates文件夹,并在其中创建一个index.html文件,代码如下:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>YOLOv5 视频检测</title>
</head>
<body>
    <h1>YOLOv5 实时目标检测</h1>
    <img src="{{ url_for('video_feed') }}" width="800" height="600">
</body>
</html>

运行Flask应用

确保你的摄像头已经连接,并且没有被其他应用占用。在命令行中运行以下命令启动Flask应用:

python app.py

打开浏览器,访问 http://127.0.0.1:5000/ ,你会看到显示的视频流,其中包含YOLOv5检测出的目标。

总结

通过以上步骤,我们实现了一个简单的Flask应用,使用YOLOv5对实时视频流进行目标检测。这个示例可以作为基础,进而扩展更多功能,包括保存检测结果、选择不同的YOLO模型、以及对视频文件的处理等。希望这个教程能为你的项目提供帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部