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).zip基于机器学习实现的农作物病虫害识别系统源码+数据(python).zip利用阿里云识农api和机器学习实现的农作物病虫害识别系统。目前,人工智能技术在农业领域的普及应用,还存在着数据共享不足、算法门槛过高、算力垄断、实验与应用环境差距过大等问题。所以,本文基于阿里云计算技术与人工智能机器学习的计算机视觉技术,开发了一套跨平台、易使用的农作物病虫害自动识别系统,大幅降低了人工智能技术的使用门槛,使农业从业人员也可享受智能技术红利,促进智慧农业发展。 基于机器学习实现的农作物病虫害识别系统源码+数据(python).zip基于机器学习实现的农作物病虫害识别系统源码+数据(python).zip利用阿里云识农api和机器学习实现的农作物病虫害识别系统。目前,人工智能技术在农业领域的普及应用,还存在着数据共享不足、算法门槛过高、算力垄断、实验与应用环境差距过大等问题。所以,本文基于阿里云计算技术与人工智能机器学习的计算机视觉技术,开发了一套跨平台、易使用的农作物病虫害自动识别系统,大幅降低了人工智能技术的使用门槛。
资源推荐
资源详情
资源评论
收起资源包目录
基于机器学习实现的农作物病虫害识别系统源码+数据(python).zip (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
资源评论
- weixin_464148052024-05-03感谢大佬,让我及时解决了当下的问题,解燃眉之急,必须支持!
程序员张小妍
- 粉丝: 1w+
- 资源: 3474
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功