import base64
import os,sys
import random
import json
import time
import datetime
import string
from flask import render_template, request, redirect, flash, url_for, session
from sqlalchemy import and_
sys.path.insert(0, os.path.abspath('..'))
from daoctor import app
from daoctor.models import *
from daoctor.机器学习.predict import img_predict
from daoctor.机器学习.识农API import 水稻识别
@app.route('/')
def MainPage():
return render_template('main.html', 当前时间=time.time())
@app.route('/backmain',methods=['GET','POST'])
def BackmainPage():
nickname = request.values.get("nickname")
print(nickname)
entry = user.query.filter(user.nickname == nickname).first()
print(entry.nickname)
return render_template('backmain.html',entry=entry)
@app.route('/upload', methods=['GET', 'POST'])
def uploader():
if request.method == 'POST':
用户ID = session["用户ID"]
f = request.files['file']
ori_path = os.path.dirname(os.path.realpath(__file__))
img_path = ori_path + '/static/shiyan.jpg'
f.save(img_path)
print(img_path)
if 用户ID == "lkz":
# 识农API
host = "http://ldttwebserver.chinanorth2.cloudapp.chinacloudapi.cn"
url = host + "/static/shiyan.jpg"
结果 = 水稻识别(url)
print(结果)
ImgIdentResult = 结果["识别结果"]
PredictAccuracy = 结果["准确率"]
else:
# 本机机器学习API
ImgIdentResult, PredictAccuracy = img_predict(img_path)
# 为查询记录增加新数据
当前使用时间 = datetime.datetime.now().strftime('%Y-%m-%d')
本次准确率 = str(PredictAccuracy) + '%'
本次推测病名 = ImgIdentResult
# 生成随机字符串作为查询ID
str_list = [random.choice(string.digits + string.ascii_letters) for i in range(5)]
# 验证是否存在
# 用户ID='隐私信息不记录到历史'#为方便知识共享让所有用户可以看到总的记录,但为了隐私在查询的历史记录保存中则不记录用户ID
# if history.query.filter(history.查询ID == (''.join(str_list))).all() == []:
# 本次查询ID = ''.join(str_list)
# print("本次查询ID", 本次查询ID)
print(f.tell())
f.seek(0) # 回到文件起始位置
# print(f.read())#f.read()和BLOB是不同的
# f.seek(0)
new_img = 'data:image/jpeg;base64,' + str(base64.b64encode(f.read()), 'utf-8')
# 从这里起,存在数据库的文件格式就是这种格式,也就是说,改成text,然后也不必在那边读取的时候进行多余的处理entry.用户上传图像就是直接可读
entry = history(本次推测病名, 当前使用时间, 用户ID, 本次准确率, new_img)
db.session.add(entry)
db.session.commit()
print(entry)
百科条目 = wiki.query.filter(wiki.病名.like('%{0}%'.format(本次推测病名))).first()
if 百科条目:
return json.dumps(
{'code': 0, 'result': ImgIdentResult, 'accuracy': PredictAccuracy, '病名': 百科条目.病名, '图片': 百科条目.图片})
# 改为返回ajax
return json.dumps({'code': 0, 'result': ImgIdentResult, 'accuracy': PredictAccuracy, '百科条目': 百科条目})
#百科的页面Controller逻辑
@app.route('/wiki/', methods=['GET', 'POST'])
@app.route('/wiki/<param>', methods=['GET', 'POST'])
def WikiPage(param=None):
print("百科传入参数:", param)
身份 = session["status"]
if param == None:
return render_template('百科/diseaseWiki.html', wiki=wiki.query.all(), 身份=身份, 当前时间=time.time())
elif param == "search":
if request.method == 'POST':
return render_template('功能页/error.html', error="Wiki Search 不能是POST")
查询病名 = request.values.get("查询病名")
return render_template('百科/diseaseWiki.html', wiki=wiki.query.filter(wiki.病名.like('%{0}%'.format(查询病名))).all(),
身份=身份, 当前时间=time.time())
elif param == "new":
if request.method == 'GET':
return render_template('百科/diseaseDetails.html', 身份=身份, 当前时间=time.time())
# POST
# if not request.form['病名'] or not request.form['危害'] or not request.form['症状']:
# return render_template('功能页/error.html',error="Wiki New 参数不全!")
# 病名, 危害, 症状,防治方式,图片,其他说明,访问次数
entry = wiki(request.form['病名'], request.form['危害'], request.form['症状'],
request.form['防治方式'], request.form['图片'],
request.form['其他说明'], request.form['访问次数'])
db.session.add(entry)
db.session.commit()
return redirect("/wiki")
elif param == "details":
if request.method == 'POST':
病名 = request.form['原病名']
editable = True
else:
病名 = request.values.get("病名")
editable = None
entry = wiki.query.filter(wiki.病名 == 病名).first()
return render_template('百科/diseaseDetails.html', entry=entry, editable=editable, 身份=身份, 当前时间=time.time())
elif param == "delete":
if request.method == 'GET':
return render_template('功能页/error.html', error="Wiki Delete 不能是GET!")
# POST
entry = wiki.query.filter(wiki.病名 == request.form['原病名']).first()
db.session.delete(entry)
db.session.commit()
return redirect("/wiki")
elif param == "update":
if request.method == 'GET':
return render_template('功能页/error.html', error="Wiki Update 不能是GET!")
# POST
oldEntry = wiki.query.filter(wiki.病名 == request.form['原病名']).first()
entry = wiki(request.form['病名'], request.form['危害'], request.form['症状'],
request.form['防治方式'], request.form['图片'],
request.form['其他说明'], request.form['访问次数'])
oldEntry.update(entry)
db.session.commit()
return render_template('百科/diseaseDetails.html', entry=entry, 身份=身份, 当前时间=time.time())
else:
return render_template('功能页/error.html', error="Wiki 没有“{0}”参数!".format(param))
# 登录
@app.route('/login', methods=['GET', 'POST'])
def LoginPage():
if (request.method == 'POST'):
nickname = request.values.get('nickname')
password = request.values.get('password')
print('nickname', nickname, 'password', password)
entry = user.query.filter(user.nickname == nickname).first()
if entry.password == password:
session["status"] = entry.status
session["用户ID"] = entry.nickname
print("LKZ: Session使用示例:", entry.status)
return render_template('index.html', entry=entry, 当前时间=time.time())
else:
return render_template('功能页/error.html', error='用户名或密码错误!')
return render_template('用户/login.html')
# 注册
@app.route('/res', methods=['GET', 'POST'])
def ResPage():
if request.method == 'POST':
nickname=request.form['nickname']
entry = user.query.filter(user.nickname == nickname).first()
if(entry!=None):
return render_template('功能页/error.html',error='该用户名已经被注册过!')
# POST
entry = user(request.form['name'], request.form['nickname'], request.form['sex'],
request.form['tel'], request.form['location'], request.form['password'], '普通用户')
db.session.add(entry)
db.session.commit()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
(python人工智能毕业设计)-基于机器学习实现的农作物病虫害识别系统(源码+数据集),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 (python人工智能毕业设计)-基于机器学习实现的农作物病虫害识别系统(源码+数据集),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 (python人工智能毕业设计)-基于机器学习实现的农作物病虫害识别系统(源码+数据集),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 (python人工智能毕业设计)-基于机器学习实现的农作物病虫害识别系统(源码+数据集),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。(python人工智能毕业设计)-基于机器学习实现的
资源推荐
资源详情
资源评论
收起资源包目录
(python人工智能毕业设计)-基于机器学习实现的农作物病虫害识别系统(源码+数据集) (477个子文件)
layui.css 73KB
layui.css 73KB
admin.css 21KB
layim.css 15KB
layer.css 14KB
layer.css 14KB
template.css 11KB
layui.mobile.css 10KB
layui.mobile.css 10KB
layim.css 9KB
me.css 8KB
laydate.css 7KB
laydate.css 7KB
tt.css 2KB
login.css 2KB
code.css 1KB
code.css 1KB
iconfont.eot 46KB
iconfont.eot 46KB
59.gif 10KB
59.gif 10KB
22.gif 10KB
22.gif 10KB
24.gif 8KB
24.gif 8KB
13.gif 7KB
13.gif 7KB
16.gif 7KB
16.gif 7KB
39.gif 6KB
39.gif 6KB
64.gif 6KB
64.gif 6KB
63.gif 6KB
63.gif 6KB
50.gif 6KB
50.gif 6KB
loading-0.gif 6KB
loading-0.gif 6KB
4.gif 6KB
4.gif 6KB
1.gif 5KB
1.gif 5KB
42.gif 5KB
42.gif 5KB
71.gif 5KB
71.gif 5KB
21.gif 5KB
21.gif 5KB
20.gif 5KB
20.gif 5KB
29.gif 5KB
29.gif 5KB
70.gif 4KB
70.gif 4KB
5.gif 4KB
5.gif 4KB
17.gif 4KB
17.gif 4KB
27.gif 4KB
27.gif 4KB
9.gif 4KB
9.gif 4KB
44.gif 4KB
44.gif 4KB
11.gif 4KB
11.gif 4KB
8.gif 4KB
8.gif 4KB
3.gif 4KB
3.gif 4KB
23.gif 4KB
23.gif 4KB
34.gif 4KB
34.gif 4KB
41.gif 4KB
41.gif 4KB
38.gif 4KB
38.gif 4KB
65.gif 3KB
65.gif 3KB
32.gif 3KB
32.gif 3KB
45.gif 3KB
45.gif 3KB
7.gif 3KB
7.gif 3KB
12.gif 3KB
12.gif 3KB
26.gif 3KB
26.gif 3KB
60.gif 3KB
60.gif 3KB
2.gif 3KB
2.gif 3KB
40.gif 3KB
40.gif 3KB
25.gif 3KB
25.gif 3KB
19.gif 3KB
共 477 条
- 1
- 2
- 3
- 4
- 5
资源评论
王二空间
- 粉丝: 6686
- 资源: 2023
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 Android、Java 和 Kotlin Multiplatform 的现代 I,O 库 .zip
- 高通TWS蓝牙规格书,做HIFI级别的耳机用
- Qt读写Usb设备的数据
- 这个存储库适合初学者从 Scratch 开始学习 JavaScript.zip
- AUTOSAR 4.4.0版本Rte模块标准文档
- 25考研冲刺快速复习经验.pptx
- MATLAB使用教程-初步入门大全
- 该存储库旨在为 Web 上的语言提供新信息 .zip
- 考研冲刺的实用经验与技巧.pptx
- Nvidia GeForce GT 1030-GeForce Studio For Win10&Win11(Win10&Win11 GeForce GT 1030显卡驱动)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功