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 # THIS IS HOW SETALLITE URL IMAGES WORKS # response = requests.get("https://maps.googleapis.com/maps/api/staticmap?center=31.4114048,74.2260736&zoom=18&scale=2&size=640x640&maptype=satellite&key=AIzaSyD2NkVHMB_8P7-R34afx0M3o0V3YT_vLQE") # img = Image.open(BytesIO(response.content)) # img.show() # print(type(img)) # model = treeCountModel.countTree(img) # print("-------------------------- RESULTS-------------------------") # print(model) # @app.route("/", methods=["GET", "POST"]) # def testing(url): # url = request.url # url = url[22:] # return url @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)