File size: 2,486 Bytes
9d942e2
 
 
 
 
 
 
 
 
 
 
 
 
afa7629
 
9d942e2
 
 
0dd2821
 
9d942e2
 
473663e
afa7629
9d942e2
0dd2821
9d942e2
8ca1104
afa7629
9d942e2
 
 
 
 
452c489
9d942e2
 
 
 
 
452c489
9d942e2
e0a5ec3
9d942e2
 
 
 
 
 
 
 
 
 
672fa5c
473663e
 
 
672fa5c
9d942e2
 
 
2bd045c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from flask import Flask, request, jsonify ,render_template , redirect
from pydantic import BaseModel
import pickle
import json
import pandas as pd
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.inception_v3 import preprocess_input
import numpy as np
import os
import gdown
import lightgbm as lgb
from PIL import Image
from flask_cors import CORS, cross_origin


app = Flask(__name__)

id = "1dPrnyH7y9ojSHaOOOTkbGkCnhwYvMxab"
output = "disease_new.h5"
gdown.download(id=id, output=output, quiet=False)
   
CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'

crop_disease_ml=load_model('disease_new.h5')

@app.route("/predict", methods=["POST"])
@cross_origin()
def upload_image():
    # if request.method == "POST":
        if request.files:
            imag = request.files["image"]
            try:
                contents = imag.read()
                with open(imag.filename, 'wb') as f:
                    f.write(contents)
            except Exception:
                return {"message": "There was an error uploading the file"}
            finally:
                imag.close()
            print(imag)
            classes = ['Pepper bell  Bacterial spot', 'Pepper bell  healthy', 'Potato  Early blight', 'Potato  Late blight', 'Potato  healthy', 'Tomato Bacterial spot', 'Tomato Early blight', 'Tomato Late blight', 'Tomato Leaf Mold', 'Tomato Septoria leaf spot', 'Tomato Spider mites Two spotted spider mite', 'Tomato Target Spot', 'Tomato Tomato YellowLeaf Curl Virus', 'Tomato Tomato mosaic virus', 'Tomato healthy']
            img=image.load_img(str(imag.filename),target_size=(224,224))
            x=image.img_to_array(img)
            x=x/255
            img_data=np.expand_dims(x,axis=0)
            prediction = crop_disease_ml.predict(img_data)
            predictions = list(prediction[0])
            max_num = max(predictions)
            index = predictions.index(max_num)
            print(classes[index])
            os.remove(str(imag.filename))
            response = jsonify(output=classes[index])
            # response.headers.add('Access-Control-Allow-Origin', '*')
            # response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
            # response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
            return response


if __name__ =="__main__":
    app.run(debug=False,host="0.0.0.0",port=5000)