Python+Django的毕业设计-基于深度学习的路面垃圾检测系统项目实战(附源码+论文)
大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。
精彩专栏推荐👇🏻👇🏻👇🏻
开发环境
- 开发语言:Python
- 框架:django
- Python版本:python3.7.7
- 数据库:mysql 5.7
- 数据库工具:Navicat11
- 开发软件:PyCharm
- 浏览器:谷歌浏览器
演示视频
python264基于深度学习的路面垃圾检测系统-修改
论文目录
【如需全文请按文末获取联系】

一、项目简介
本文结合路面垃圾检测的应用现状,综合分析了国内外路面垃圾检测研究方向,针对复杂多样的城市路面环境,基于深度学习的图像分割模型及YOLOv8模型实现路面垃圾图像内容的监测识别,同时利用Python编程语言及Django框架搭建WEB端系统平台,通过传入视频及批量上传图像的方式实现路面垃圾监测及评估,借助垃圾检测系统实现高效的垃圾清洁度评估及路面清洁任务分配。系统按照用户需求分为用户前端及管理员后台,用户可通过系统查看清扫任务及上传清扫图片,管理员可通过系统后台的实时检测模块及图像采集识别模块实现路面垃圾检测识别,对于垃圾密集区域给用户发送清扫任务。路面垃圾检测系统的应用有效提升了路面垃圾检测的准确性,同时提高了清扫任务分配的效率。
二、系统设计
2.1软件功能模块设计
路面垃圾检测系统功能结构图如图4.1所示。
2.2数据库设计
(1)用户信息:用户信息主要包括了用户ID、姓名、手机、邮箱、角色及用户信息创建时间。
(2)任务信息:清扫任务信息包括了任务ID、任务名称、清扫处理后的图片地址、任务领取状态、处理用户名称及任务创建时间。
(3)管理员用户信息:管理员用户信息包括了用户ID、用户名、手机、邮箱、创建时间及用户描述。
三、系统项目部分截图
3.1管理员后台
系统注册登录页面
用户及管理员用户通过浏览器访问路面垃圾检测系统,可录入正确的账号及密码信息实现系统的登录,对于没有账号的用户可在线免费注册账户,需要用户录入账户名称、联系方式、账户密码,完成注册后用户可通过注册的账户密码实现检测系统平台的登录使用,系统注册登录页面如图5.1.1所示。


系统首页
管理员用户登录进入路面垃圾检测系统后,系统首页包含了功能导航栏、系统统计数据、日历及近七天使用情况,为管理员提供了系统累计用户数量、检测次数以及当前日期等信息。同时管理员用户可通过首页导航栏内的功能模块进行图片识别、任务管理、实时识别及用户管理等功能的应用,首页页面呈现如图5.1.2所示。
图像识别页面
管理员用户通过检测系统的图像识别功能可进入图像识别页面,可实现单张识别及批量识别,通过单张识别上传垃圾图片,点击开始检测后系统会识别并标记检测的垃圾数量,同时图像识别的数据信息会自动进入任务列表,单张识别页面呈现如下:
3.2用户前端
用户首页页面
用户登录进入路面垃圾检测系统后,首页呈现了日历信息、截止当天的系统数据及使用量柱状分析图,用户可通过首页的可视化面板了解系统当前的用户数及检测次数,同时可通过任务领取及个人信息管理模块领取清扫任务及修改个人信息,用户首页页面呈现如图5.2.1所示。
任务处理页面
用户通过任务领取模块可查看系统分配的任务信息,可点击处理上传清理后的图片,用户也可通过录入任务名称实现任务的查询。
四、部分核心代码
import time
from django.contrib.auth import authenticate, login
from django.shortcuts import render
from .models import User
from django.http import JsonResponse, HttpResponseRedirect
from django.core.paginator import Paginator
from util.common import login_request
from util import common
def verif_has_username(id, name):
# 判断是否用重复的用户名
user = User.objects.exclude(id=id).filter(username=name)
return True if len(user) > 0 else False
def register(request):
"""
注册账号
:return:
"""
username = request.POST.get('username')
sign = verif_has_username(None, username)
password = request.POST.get('password')
phone = request.POST.get('phone')
email = request.POST.get('email', '1@qq.com')
if sign:
return JsonResponse({"statusCode": '500', "msg": "用户名重复!"})
response_data = {
"statusCode": '200',
"msg": "用户" + request.POST["username"] + "新增成功!",
}
if password == "" or username == "":
response_data["statusCode"] = '403'
response_data["msg"] = "用户名或密码为空,注册失败!"
# 新增用户
try:
User.objects.create_user(
username=username,
password=password,
is_superuser='f',
is_active='t',
email=email,
phone=phone
)
common.create_log(request, '新增', '创建用户', username, 1)
except Exception as e:
print(e)
common.create_log(request, '新增', '创建用户失败', '', 0)
response_data["statusCode"] = '500'
response_data["msg"] = "用户新增失败"
return JsonResponse(response_data)
@login_request
def password(request):
return render(request, 'modify_password.html', locals())
def get_user(request):
"""
获取用户列表信息 | 模糊查询
:param request:
:return:
"""
page = request.GET.get("page", '')
keyword = request.GET.get("name", '')
limit = request.GET.get("limit", '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = User.objects.all()
else:
results_obj = User.objects.filter(username__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for result in results:
record = {
"id": result.id,
"name": result.username,
"password": result.password,
"email": result.email,
"phone": result.phone,
"role": "管理员" if result.is_superuser else "普通用户",
'create_time': result.date_joined.strftime('%Y-%m-%d %H:%m:%S'),
"desc": result.description,
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
@login_request
def user(request):
"""
跳转用户页面
"""
return render(request, 'user.html', locals())
def login_check(request):
"""
登录校验
"""
response_data = {}
username = request.POST.get('username')
password = request.POST.get('password')
user_obj = authenticate(username=username, password=password)
if user_obj:
# 将用户名存入session中
response_data['msg'] = '登录成功'
response_data['statusCode'] = '200'
login(request, user_obj)
common.create_log(request, '登录', '登录系统', '', 1)
return JsonResponse(response_data, status=201)
else:
common.create_log(request, '登录', '登录系统', username, 0)
return JsonResponse({'msg': '用户名或者密码不正确', 'statusCode': '500'}, status=401)
def edit_user(request):
"""
修改用户
"""
response_data = {}
user_id = request.POST.get('id')
username = request.POST.get('username', '')
phone = request.POST.get('phone', '')
email = request.POST.get('email', '')
description = request.POST.get('desc', '')
role = request.POST.get('role', '')
if role == '1':
User.objects.filter(id=user_id).update(
username=username,
email=email,
is_superuser='t',
description=description,
phone=phone)
elif role == '2':
User.objects.filter(id=user_id).update(
username=username,
email=email,
is_superuser='f',
description=description,
phone=phone)
else:
User.objects.filter(id=user_id).update(
username=username,
email=email,
description=description,
phone=phone)
response_data['msg'] = '编辑成功!'
response_data['error'] = 0
common.create_log(request, '修改', '修改用户', username, 1)
return JsonResponse(response_data, status=201)
def del_user(request):
"""
删除用户
"""
user_id = request.POST.get('id')
result = User.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
return JsonResponse(response_data, status=403)
common.create_log(request, '删除', '删除用户', result.username, 1)
result.delete()
response_data = {'message': '删除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
common.create_log(request, '删除', '删除用户', result.username, 0)
response_data = {'message': '删除失败!'}
return JsonResponse(response_data, status=403)
def change_password(request):
"""
修改密码
"""
current_user = request.user
if current_user.password == request.POST.get('password'):
# 修改的密码与原密码重复不予修改
return JsonResponse({"msg": "修改密码与原密码重复"}), 406
else:
# 不重复,予以修改
current_user.set_password(request.POST.get('password'))
current_user.save()
# 清除session回到login界面
logout(request)
return JsonResponse({"msg": "success"})
获取源码或论文
如需对应的论文或源码,以及其他定制需求,也可以下方微信联系我。
更多推荐

所有评论(0)