|
'''from flask import Flask, render_template, request |
|
import cv2 |
|
import numpy as np |
|
import base64 |
|
import re |
|
|
|
app = Flask(__name__) |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
@app.route('/upload_frame', methods=['POST']) |
|
def upload_frame(): |
|
data = request.get_json() |
|
if 'image' not in data: |
|
return 'No image', 400 |
|
|
|
image_data = re.sub('^data:image/.+;base64,', '', data['image']) |
|
img_bytes = base64.b64decode(image_data) |
|
np_img = np.frombuffer(img_bytes, dtype=np.uint8) |
|
frame = cv2.imdecode(np_img, cv2.IMREAD_COLOR) |
|
|
|
# Process frame here (e.g., face detection) |
|
print("Received a frame of shape:", frame.shape) |
|
|
|
return 'OK', 200 |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=5001, debug=True)''' |
|
''' |
|
import cv2 |
|
import numpy as np |
|
import base64 |
|
from flask import Flask, request, jsonify, render_template |
|
from ultralytics import YOLO |
|
|
|
app = Flask(__name__) |
|
model = YOLO('yolov8n.pt') # Load the YOLO model |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') # Your HTML file |
|
|
|
@app.route('/upload_frame', methods=['POST']) |
|
def upload_frame(): |
|
data = request.get_json() |
|
image_data = data['image'].split(',')[1] |
|
img_bytes = base64.b64decode(image_data) |
|
np_arr = np.frombuffer(img_bytes, np.uint8) |
|
frame = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) |
|
|
|
# Run YOLO detection |
|
results = model(frame) |
|
for result in results: |
|
for box in result.boxes: |
|
x1, y1, x2, y2 = map(int, box.xyxy[0]) |
|
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) |
|
|
|
# (Optional) Save or return detections if needed |
|
return jsonify({"status": "success"}) |
|
|
|
if __name__ == '__main__': |
|
app.run(debug=True) |
|
''' |
|
'''import cv2 |
|
import numpy as np |
|
import base64 |
|
from flask import Flask, request, jsonify, render_template |
|
from ultralytics import YOLO |
|
|
|
app = Flask(__name__) |
|
model = YOLO('yolov8n.pt') |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
@app.route('/upload_frame', methods=['POST']) |
|
def upload_frame(): |
|
data = request.get_json() |
|
image_data = data['image'].split(',')[1] |
|
img_bytes = base64.b64decode(image_data) |
|
np_arr = np.frombuffer(img_bytes, np.uint8) |
|
frame = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) |
|
|
|
# Run YOLO detection |
|
results = model(frame) |
|
for result in results: |
|
for box in result.boxes: |
|
x1, y1, x2, y2 = map(int, box.xyxy[0]) |
|
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) |
|
|
|
# Encode the frame back to JPEG |
|
_, buffer = cv2.imencode('.jpg', frame) |
|
annotated_base64 = base64.b64encode(buffer).decode('utf-8') |
|
return jsonify({"status": "success", "image": f"data:image/jpeg;base64,{annotated_base64}"}) |
|
|
|
if __name__ == '__main__': |
|
app.run(host="0.0.0.0", port=5001, debug=True)''' |
|
'''import cv2 |
|
import numpy as np |
|
import base64 |
|
from flask import Flask, request, jsonify, render_template |
|
from ultralytics import YOLO |
|
|
|
app = Flask(__name__) |
|
|
|
# Load YOLOv8 model (e.g., yolov8n.pt, yolov8s.pt, etc.) |
|
model = YOLO('yolov8n.pt') |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
@app.route('/upload_frame', methods=['POST']) |
|
def upload_frame(): |
|
data = request.get_json() |
|
if 'image' not in data: |
|
return jsonify({'error': 'No image provided'}), 400 |
|
|
|
# Decode base64 image |
|
image_data = data['image'].split(',')[1] |
|
img_bytes = base64.b64decode(image_data) |
|
np_arr = np.frombuffer(img_bytes, np.uint8) |
|
frame = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) |
|
|
|
# Run YOLO detection |
|
results = model(frame) |
|
|
|
for result in results: |
|
for box in result.boxes: |
|
x1, y1, x2, y2 = map(int, box.xyxy[0]) # Coordinates |
|
class_id = int(box.cls[0]) # Class ID |
|
class_name = model.names[class_id] # Class name |
|
|
|
# Draw bounding box |
|
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) |
|
|
|
# Put class name text |
|
cv2.putText( |
|
frame, |
|
class_name, |
|
(x1, y1 - 10), |
|
cv2.FONT_HERSHEY_SIMPLEX, |
|
0.6, |
|
(0, 255, 0), |
|
2 |
|
) |
|
|
|
# Encode annotated image back to base64 |
|
_, buffer = cv2.imencode('.jpg', frame) |
|
annotated_base64 = base64.b64encode(buffer).decode('utf-8') |
|
|
|
return jsonify({ |
|
"status": "success", |
|
"image": f"data:image/jpeg;base64,{annotated_base64}" |
|
}) |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=5001, debug=True)''' |
|
|
|
'''import cv2 |
|
import numpy as np |
|
import base64 |
|
from flask import Flask, request, jsonify, render_template |
|
from ultralytics import YOLO |
|
|
|
app = Flask(__name__) |
|
model = YOLO('yolov8n.pt') # Load YOLOv8 model |
|
CONFIDENCE_THRESHOLD = 0.8 # Set confidence threshold (0.0 to 1.0) |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
@app.route('/upload_frame', methods=['POST']) |
|
def upload_frame(): |
|
data = request.get_json() |
|
if 'image' not in data: |
|
return jsonify({'error': 'No image provided'}), 400 |
|
|
|
# Decode base64 image |
|
image_data = data['image'].split(',')[1] |
|
img_bytes = base64.b64decode(image_data) |
|
np_arr = np.frombuffer(img_bytes, np.uint8) |
|
frame = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) |
|
|
|
# Run YOLO detection |
|
results = model(frame) |
|
|
|
for result in results: |
|
for box in result.boxes: |
|
if box.conf[0] < CONFIDENCE_THRESHOLD: |
|
continue |
|
|
|
x1, y1, x2, y2 = map(int, box.xyxy[0]) |
|
class_id = int(box.cls[0]) |
|
class_name = model.names[class_id] |
|
confidence = float(box.conf[0]) |
|
|
|
# Draw bounding box |
|
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) |
|
|
|
# Draw class name + confidence |
|
label = f"{class_name} {confidence:.2f}" |
|
cv2.putText(frame, label, (x1, y1 - 10), |
|
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2) |
|
|
|
# Encode the frame back to base64 |
|
_, buffer = cv2.imencode('.jpg', frame) |
|
annotated_base64 = base64.b64encode(buffer).decode('utf-8') |
|
|
|
return jsonify({ |
|
"status": "success", |
|
"image": f"data:image/jpeg;base64,{annotated_base64}" |
|
}) |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=5001, debug=True) |
|
''' |
|
import cv2 |
|
import numpy as np |
|
import base64 |
|
from flask import Flask, request, jsonify, render_template |
|
from ultralytics import YOLO |
|
|
|
app = Flask(__name__) |
|
model = YOLO('yolov8n.pt') |
|
CONFIDENCE_THRESHOLD = 0.5 |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
@app.route('/upload_frame', methods=['POST']) |
|
def upload_frame(): |
|
data = request.get_json() |
|
if 'image' not in data: |
|
return jsonify({'error': 'No image provided'}), 400 |
|
|
|
|
|
image_data = data['image'].split(',')[1] |
|
img_bytes = base64.b64decode(image_data) |
|
np_arr = np.frombuffer(img_bytes, np.uint8) |
|
frame = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) |
|
|
|
|
|
results = model(frame) |
|
|
|
for result in results: |
|
for box in result.boxes: |
|
if box.conf[0] < CONFIDENCE_THRESHOLD: |
|
continue |
|
|
|
x1, y1, x2, y2 = map(int, box.xyxy[0]) |
|
class_id = int(box.cls[0]) |
|
class_name = model.names[class_id] |
|
confidence = float(box.conf[0]) |
|
|
|
|
|
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) |
|
|
|
|
|
label = f"{class_name} {confidence:.2f}" |
|
cv2.putText(frame, label, (x1, y1 - 10), |
|
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2) |
|
|
|
|
|
_, buffer = cv2.imencode('.jpg', frame) |
|
annotated_base64 = base64.b64encode(buffer).decode('utf-8') |
|
|
|
return jsonify({ |
|
"status": "success", |
|
"image": f"data:image/jpeg;base64,{annotated_base64}" |
|
}) |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=5001, debug=True) |
|
|