from flask import Flask, render_template, request, jsonify import os import base64 import requests from PIL import Image from io import BytesIO app = Flask(__name__) # Configuration UPLOAD_FOLDER = 'static/captures' os.makedirs(UPLOAD_FOLDER, exist_ok=True) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # Hugging Face API settings HF_API_TOKEN = os.getenv('HF_API_TOKEN') # Load token from environment variable HF_API_URL = "https://api-inference.huggingface.co/models/facebook/detr-resnet-50" # Example model for object detection def query_hugging_face(image_data): if not HF_API_TOKEN: raise ValueError("Hugging Face API token not set. Please set the HF_API_TOKEN environment variable.") headers = {"Authorization": f"Bearer {HF_API_TOKEN}"} response = requests.post(HF_API_URL, headers=headers, data=image_data) return response.json() @app.route('/') def index(): return render_template('index.html') @app.route('/capture', methods=['POST']) def capture(): try: # Get the base64 image data from the request data = request.form['image'] header, encoded = data.split(",", 1) binary_data = base64.b64decode(encoded) # Save the image filename = f"capture_{len(os.listdir(app.config['UPLOAD_FOLDER'])) + 1}.jpg" filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) with open(filepath, "wb") as f: f.write(binary_data) # Process with Hugging Face API with open(filepath, "rb") as f: hf_result = query_hugging_face(f.read()) # Return the image URL and Hugging Face result image_url = f"/{filepath}" return jsonify({ 'status': 'success', 'image_url': image_url, 'hf_result': hf_result }) except Exception as e: return jsonify({'status': 'error', 'message': str(e)}) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=7860)