from flask import Flask, request # from io import BytesIO # from PIL import Image # import treeCountModel import recycleModel import numpy as np # import requests import cv2 app = Flask(__name__) @app.route("/", methods=["GET", "POST"]) def index(): message = "Welcome to my API! Here are the available endpoints:" recycle_url = request.host_url + "recycle-prediction" tree_count_url = request.host_url + "tree-count" response = { "message": message, "endpoints": {"recycle_prediction": recycle_url, "tree_count": tree_count_url}, } return response, 200 @app.route("/recycle-prediction", methods=["GET", "POST"]) def recycle(): result = None if request.method == "POST": if "img" not in request.files: return "No file uploaded for recycling material prediction", 400 img = request.files["img"] img_array = cv2.imdecode(np.frombuffer(img.read(), np.uint8), cv2.IMREAD_COLOR) model = recycleModel.recyclePrediction(img_array) # model = recycleModel.recyclePrediction(img) response = {"Recycling Material": model} result = response return result return result # @app.route("/tree-count/", methods=["GET", "POST"]) # def treeCount(url): # result = None # if request.method == "GET": # url = request.url # url = url[50:] # response = requests.get(url) # if url is None: # return "No image URL provided", 400 # img = Image.open(BytesIO(response.content)) # model = treeCountModel.countTree(img) # result = {"Tree Count": model} # return result if __name__ == "__main__": app.run(debug=True)