[python] sdsewwewqe

Viewer

copydownloadembedprintName: sdsewwewqe
  1. import string
  2. import bcrypt
  3. from flask import Flask, redirect, render_template, url_for, request, Markup
  4. from flask_sqlalchemy import SQLAlchemy
  5. from flask_login import UserMixin, login_user, LoginManager, login_required, logout_user, current_user
  6. from wtforms import StringField, PasswordField, SubmitField
  7. from wtforms.validators import InputRequired, Length, ValidationError
  8. from flask_wtf import FlaskForm
  9. from flask_bcrypt import Bcrypt
  10. from datetime import datetime
  11. import requests
  12. import numpy as np
  13. import pandas as pd
  14. import config
  15. import pickle
  16. import io
  17. import torch
  18. from torchvision import transforms
  19. from PIL import Image
  20. from utils.model import ResNet9
  21. from utils.fertilizer import fertilizer_dic
  22. from utils.disease import disease_dic
  23.  
  24. # -------------------------LOADING THE TRAINED MODELS -----------------------------------------------
  25.  
  26. # Loading crop recommendation model
  27. crop_recommendation_model_path = 'models/RandomForest.pkl'
  28. crop_recommendation_model = pickle.load(
  29.     open(crop_recommendation_model_path, 'rb'))
  30.  
  31. # Loading plant disease classification model
  32.  
  33. disease_classes = ['Apple___Apple_scab',
  34.                    'Apple___Black_rot',
  35.                    'Apple___Cedar_apple_rust',
  36.                    'Apple___healthy',
  37.                    'Blueberry___healthy',
  38.                    'Cherry_(including_sour)___Powdery_mildew',
  39.                    'Cherry_(including_sour)___healthy',
  40.                    'Corn_(maize)___Cercospora_leaf_spot Gray_leaf_spot',
  41.                    'Corn_(maize)___Common_rust_',
  42.                    'Corn_(maize)___Northern_Leaf_Blight',
  43.                    'Corn_(maize)___healthy',
  44.                    'Grape___Black_rot',
  45.                    'Grape___Esca_(Black_Measles)',
  46.                    'Grape___Leaf_blight_(Isariopsis_Leaf_Spot)',
  47.                    'Grape___healthy',
  48.                    'Orange___Haunglongbing_(Citrus_greening)',
  49.                    'Peach___Bacterial_spot',
  50.                    'Peach___healthy',
  51.                    'Pepper,_bell___Bacterial_spot',
  52.                    'Pepper,_bell___healthy',
  53.                    'Potato___Early_blight',
  54.                    'Potato___Late_blight',
  55.                    'Potato___healthy',
  56.                    'Raspberry___healthy',
  57.                    'Soybean___healthy',
  58.                    'Squash___Powdery_mildew',
  59.                    'Strawberry___Leaf_scorch',
  60.                    'Strawberry___healthy',
  61.                    'Tomato___Bacterial_spot',
  62.                    'Tomato___Early_blight',
  63.                    'Tomato___Late_blight',
  64.                    'Tomato___Leaf_Mold',
  65.                    'Tomato___Septoria_leaf_spot',
  66.                    'Tomato___Spider_mites Two-spotted_spider_mite',
  67.                    'Tomato___Target_Spot',
  68.                    'Tomato___Tomato_Yellow_Leaf_Curl_Virus',
  69.                    'Tomato___Tomato_mosaic_virus',
  70.                    'Tomato___healthy']
  71.  
  72. # disease prediction
  73. disease_model_path = 'models/plant_disease_model.pth'
  74. disease_model = ResNet9(3, len(disease_classes))
  75. disease_model.load_state_dict(torch.load(
  76.     disease_model_path, map_location=torch.device('cpu')))
  77. disease_model.eval()
  78.  
  79.  
  80.  
  81. def weather_fetch(city_name):
  82.     """
  83.     Fetch and returns the temperature and humidity of a city
  84.     :params: city_name
  85.     :return: temperature, humidity
  86.     """
  87.     api_key = config.weather_api_key
  88.     base_url = "http://api.openweathermap.org/data/2.5/weather?"
  89.  
  90.     complete_url = base_url + "appid=" + api_key + "&q=" + city_name
  91.     response = requests.get(complete_url)
  92.     x = response.json()
  93.  
  94.     if x["cod"] != "404":
  95.         y = x["main"]
  96.  
  97.         temperature = round((y["temp"] - 273.15), 2)
  98.         humidity = y["humidity"]
  99.         return temperature, humidity
  100.     else:
  101.         return None
  102.  
  103. def predict_image(img, model=disease_model):
  104.     """
  105.     Transforms image to tensor and predicts disease label
  106.     :params: image
  107.     :return: prediction (string)
  108.     """
  109.     transform = transforms.Compose([
  110.         transforms.Resize(256),
  111.         transforms.ToTensor(),
  112.     ])
  113.     image = Image.open(io.BytesIO(img))
  114.     img_t = transform(image)
  115.     img_u = torch.unsqueeze(img_t, 0)
  116.  
  117.     # Get predictions from model
  118.     yb = model(img_u)
  119.     # Pick index with highest probability
  120.     _, preds = torch.max(yb, dim=1)
  121.     prediction = disease_classes[preds[0].item()]
  122.     # Retrieve the class label
  123.     return prediction
  124.  
  125.  
  126.  
  127. app = Flask(__name__)
  128. db = SQLAlchemy(app)
  129. bcrypt = Bcrypt(app)
  130. app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///database.db"
  131. app.config["SECRET_KEY"] = 'thisissecretkey'
  132.  
  133.  
  134.  
  135. login_manager = LoginManager()
  136. login_manager.init_app(app)
  137. login_manager.login_view = "login"
  138.  
  139.  
  140.  
  141. @login_manager.user_loader
  142. def load_user(user_id):
  143.     return User.query.get(int(user_id))
  144.  
  145. class User(db.Model,UserMixin):
  146.     id = db.Column(db.Integer,primary_key=True)
  147.     username = db.Column(db.String(20), nullable=False, unique=True)
  148.     password = db.Column(db.String(80), nullable=False)
  149.     crop_results = db.relationship('CropResult', backref='user', lazy=True)
  150.  
  151. class UserAdmin(db.Model,UserMixin):
  152.     id = db.Column(db.Integer,primary_key=True)
  153.     username = db.Column(db.String(20), nullable=False, unique=True)
  154.     password = db.Column(db.String(80), nullable=False)
  155.  
  156. class RegisterForm(FlaskForm):
  157.     username=StringField(validators=[InputRequired(),Length(min=5,max=20)],render_kw={"placeholder":"username"})
  158.     password=PasswordField(validators=[InputRequired(),Length(min=5,max=20)],render_kw={"placeholder":"password"})
  159.     submit = SubmitField("Register")
  160.  
  161.     def validate_username(self, username):
  162.         existing_user_username = User.query.filter_by(username=username.data).first()
  163.         if existing_user_username:
  164.             raise ValidationError("That username already exist. please choose different one.")
  165.  
  166. class LoginForm(FlaskForm):
  167.     username=StringField(validators=[InputRequired(),Length(min=5,max=20)],render_kw={"placeholder":"username"})
  168.     password=PasswordField(validators=[InputRequired(),Length(min=5,max=20)],render_kw={"placeholder":"password"})
  169.     submit = SubmitField("Login")
  170.     
  171.     https://www.madisonjournal.com/sites/default/files/inline-files/DSDSD.pdf
  172. https://www.madisonjournal.com/sites/default/files/inline-files/Untitled%20document.pdf
  173. https://www.madisonjournal.com/sites/default/files/inline-files/Gran%20Turismo_0.pdf
  174. https://www.madisonjournal.com/sites/default/files/inline-files/Sound%20of%20Freedom_1.pdf
  175. https://www.madisonjournal.com/sites/default/files/inline-files/The%20Equalizer%203.pdf
  176. https://www.madisonjournal.com/sites/default/files/inline-files/The%20Black%20Book.pdf
  177. https://www.madisonjournal.com/sites/default/files/inline-files/Operation%20Napoleon.pdf
  178. https://www.madisonjournal.com/sites/default/files/inline-files/Saw%20X%203.pdf
  179. https://www.madisonjournal.com/sites/default/files/inline-files/Nowhere.pdf
  180. https://www.madisonjournal.com/sites/default/files/inline-files/Gran%20Turismo_0.pdf
  181. https://www.madisonjournal.com/sites/default/files/inline-files/Concrete%20Utopia.pdf
  182. https://socialprotection.org/sites/default/files/database_files/The%20Nightmare%20Before%20Christmas.pdf
  183. https://www.enterprise-journal.com/sites/default/files/inline-files/The%20Beasts.pdf
  184. https://www.enterprise-journal.com/sites/default/files/inline-files/Jujutsu%20Kaisen.pdf
  185. https://www.enterprise-journal.com/sites/default/files/inline-files/Concrete%20Utopia.pdf
  186. https://www.enterprise-journal.com/sites/default/files/inline-files/Loki.pdf
  187. https://www.enterprise-journal.com/sites/default/files/inline-files/Jeanne%20du%20Barry.pdf
  188. https://baskadia.com/post/7drn
  189. https://baskadia.com/post/7drp
  190.  
  191. class CropResult(db.Model):
  192.     id = db.Column(db.Integer, primary_key=True)
  193.     user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  194.     crop_name = db.Column(db.String(50), nullable=False)
  195.     result = db.Column(db.String(50), nullable=False)
  196.     date_created = db.Column(db.DateTime, default=datetime.utcnow)
  197. with app.app_context():
  198.     db.create_all()

Editor

You can edit this paste and save as new:


File Description
  • sdsewwewqe
  • Paste Code
  • 08 Oct-2023
  • 8.02 Kb
You can Share it: