微信小程序调用yolo目标检测模型
目录
后端
前端微信小程序
完整代码
后端
利用Flask,调用目标检测模型,后端代码如下。
# flask_yolo.py
from flask import Flask, request, jsonify
from ultralytics import YOLO
from PIL import Imageapp = Flask(__name__)
model_path = 'best.pt'
model = YOLO(model_path) # 加载模型@app.route("/predict", methods=["POST"])
def predict():file = request.files["image"]image = Image.open(file.stream)results = model(image)boxes = []for box in results[0].boxes:xyxy = [int(x) for x in box.xyxy[0].tolist()]conf = round(float(box.conf[0]), 3)cls = int(box.cls[0])name = results[0].names[cls]boxes.append({'coor': xyxy,'conf': conf,'class': name})# print(boxes)return jsonify(boxes)if __name__ == "__main__":app.run(host="0.0.0.0", port=5005)
启动后端服务:
$ python flask_yolo.py * Serving Flask app 'flask_yolo'* Debug mode: off* Running on all addresses (0.0.0.0)* Running on http://127.0.0.1:5005* Running on http://x.x.x.x:5005
Press CTRL+C to quit
前端微信小程序
调用服务的js关键代码:
// 上传图片到后端调用服务uploadImage(filePath) {this.setData({ loading: true });wx.uploadFile({url: 'http://****/predict', //your flask apifilePath: filePath,name: 'image',success: (res) => {const detectionResult = JSON.parse(res.data);this.setData({detectionResult,loading: false});// 计算检测框位置if (this.data.imageInfo && this.data.originalImageSize) {this.updateDetectionBoxes();}},fail: (error) => {console.error('上传失败:', error);wx.showToast({title: '上传失败',icon: 'error'});this.setData({ loading: false });}});}
效果
完整代码
https://github.com/crystal0913/miniprogram_yolo
如需在手机上预览,需在小程序项目根目录下的project.config.json中填上你的appid。