Spaces:
Sleeping
Sleeping
| from flask import Flask, render_template, request, jsonify | |
| import cv2 | |
| import numpy as np | |
| from ultralytics import YOLO | |
| import base64 | |
| app = Flask(__name__) | |
| model = YOLO("yolov8n.pt") | |
| def readb64(base64_string): | |
| if ',' not in base64_string: | |
| raise ValueError("Invalid base64 image string.") | |
| header, encoded = base64_string.split(',', 1) | |
| if not encoded: | |
| raise ValueError("Empty base64 image data.") | |
| nparr = np.frombuffer(base64.b64decode(encoded), np.uint8) | |
| img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) | |
| if img is None: | |
| raise ValueError("Image decoding failed.") | |
| return img | |
| def index(): | |
| return render_template('index.html') | |
| def detect(): | |
| data = request.get_json() | |
| frame_data = data['image'] | |
| frame = readb64(frame_data) | |
| results = model.predict(frame, conf=0.5) | |
| annotated = results[0].plot() | |
| _, buffer = cv2.imencode('.jpg', annotated) | |
| annotated_b64 = base64.b64encode(buffer).decode('utf-8') | |
| return jsonify({'image': f'data:image/jpeg;base64,{annotated_b64}'}) | |
| if __name__ == '__main__': | |
| app.run(host='0.0.0.0', port=7860) | |