基于深度学习屋内烟雾检测方法

项目运行

需要先安装Python的相关依赖:pymysql,Django==3.2.8 ,opencv-python,numpy,pillow使用pip install 安装

第一步:创建数据库

第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句

第三步:修改源代码中的settings.py文件,改成自己的mysql数据库用户名和密码

第四步:运行命令:python manage.py runserver 8000

第五步:打开浏览器查看http://127.0.0.1:8000
毕设帮助,指导,本源码分享,调试部署(见文末)

系统介绍:

该系统主要就是基于C/S架构模式开发的系统,利用python技术和MySQL 数据库进行系统的设计和开发。

下图即为设计的功能结构,

![图4.1 管理员功能结构](https://img-blog.csdnimg.cn/direct/a6fc8a0c006c4cdc9ea643c857896478.png

功能截图:

编程人员在搭建的开发环境中,会让各种编程技术一起呈现出最终效果。本节就展示关键部分的页面效果。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

代码实现:

import datetime
import os
from django.core.paginator import Paginator
from django.db.models import Count
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, JsonResponse
from django.shortcuts import render
from user.models import User
from .models import *
from .smoke_master.smoke_file_obj import *
workdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

def login(req):
    """
    跳转登录
    :param req:
    :return:
    """
    return render(req, 'login.html')


def register(req):
    """
    跳转注册
    :param req:
    :return:
    """
    return render(req, 'register.html')


def index(req):
    """
    跳转首页
    :param req:
    :return:
    """
    username = req.session['username']
    total_user = len(User.objects.all())
    total_pic = Pic.objects.count()
    date = datetime.datetime.today()
    month = date.month
    year = date.year
    return render(req, 'index.html', locals())


def login_out(req):
    """
    注销登录
    :param req:
    :return:
    """
    del req.session['username']
    return HttpResponseRedirect('/')


def personal(req):
    username = req.session['username']
    role_id = req.session['role']
    user = User.objects.filter(name=username).first()
    return render(req, 'personal.html', locals())


def upload_pic(request):
    if request.method == 'POST':
        form = ImageUploadForm(request.POST, request.FILES)  # 有文件上传要传如两个字段
        if form.is_valid():
            m = User.objects.get(pk=request.session['user_id'])
            m.image = form.cleaned_data['image']  # 直接在这里使用 字段名获取即可
            m.save()
            return HttpResponse('image upload success')
        return HttpResponseForbidden('allowed only via POST')



def get_data(request):
    """
    获取列表信息 | 模糊查询
    :param request:
    :return:
    """
    keyword = request.GET.get('name')
    page = request.GET.get("page", '')
    limit = request.GET.get("limit", '')
    role_id = request.GET.get('position','')
    response_data = {}
    response_data['code'] = 0
    response_data['msg'] = ''
    data = []
    if keyword is None:
        results_obj = Pic.objects.all()
    else:
        results_obj = Pic.objects.filter(name__contains=keyword).all()
    paginator = Paginator(results_obj, limit)
    results = paginator.page(page)
    if results:
        for user in results:
            record = {
                "id": user.id,
                "name": user.name,
                "result": user.result,
                "status": user.status,
                "owner": user.owner,
                'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
            }
            data.append(record)
        response_data['count'] =len(results_obj)
        response_data['data'] = data

    return JsonResponse(response_data)


def data(request):
    """
    跳转页面
    """
    username = request.session['username']
    role = int(request.session['role'])
    user_id= request.session['user_id']
    return render(request, 'data.html', locals())


def edit_data(request):
    """
    修改信息
    """
    response_data = {}
    user_id = request.POST.get('id')
    username = request.POST.get('username')
    phone = request.POST.get('phone')
    User.objects.filter(id=user_id).update(
        name=username,
        phone=phone)
    response_data['msg'] = 'success'
    return JsonResponse(response_data, status=201)


def del_data(request):
    """
    删除信息
    """
    user_id = request.POST.get('id')
    result = Pic.objects.filter(id=user_id).first()
    try:
        if not result:
            response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
            return JsonResponse(response_data, status=403)
        result.delete()
        response_data = {'message': '删除成功!'}
        return JsonResponse(response_data, status=201)
    except Exception as e:
        response_data = {'message': '删除失败!'}
        return JsonResponse(response_data, status=403)



def tpsb(request):
    """
    跳转页面
    """
    username = request.session['username']
    role = int(request.session['role'])
    user_id = request.session['user_id']
    results = Pic.objects.all()
    image_list = []
    for i in results:
        record= {
            'id':i.id,
            'name':i.name
        }
        image_list.append(record)
    return render(request, 'tpsb.html', locals())

def tpgl(request):
    """
    跳转页面
    """
    username = request.session['username']
    role = int(request.session['role'])
    user_id = request.session['user_id']
    results = Pic.objects.all()

    return render(request, 'tpgl.html', locals())
def analysis(request):
    results = Pic.objects.values('result').annotate(myCount=Count('result'))  # 返回查询集合
    country = []
    count = []
    for i in results:
        country.append(i['result'])
        count.append(i['myCount'])
    result1 = Pic.objects.values('owner').annotate(myCount=Count('owner'))  # 返回查询集合
    values = []
    for i in result1:
        values.append({'name':i['owner'],'value':i['myCount']})

    username = request.session.get('username', 'admin')
    role = int(request.session.get('role', 3))
    user_id = request.session.get('user_id', 1)
    return render(request, 'analysis.html', locals())
def save_file(file):
    if file is not None:
        file_name = os.path.join(workdir, 'static', 'uploadImg', file.name)
        with open(file_name, 'wb')as f:
            # chunks()每次读取数据默认 我64k
            for chunk in file.chunks():
                f.write(chunk)
            f.close()
        return file_name
    else:
        return None


def predict(request):
    image = request.FILES.get('image')
    file_name = save_file(image)
    file_path = os.path.join(workdir, 'static', 'uploadImg', image.name)
    # try:
    result = main(file_path)
    print(result)
    status= '无烟'
    if result:
        for i in result:
            for key,value in i.items():
                print(value)
                if value=="smoke":
                    status='有烟'
    else:
        status='无烟'
    Pic.objects.create(name=image.name,
                       status="成功",
                       result=status,
                       owner=request.session.get('username', 'admin'),
                       )
    return JsonResponse({"result": status})
    # except Exception as e:
    #     print(e)
    #     return JsonResponse({"error":403})


def get_result(request,pic_id):
    result = Pic.objects.filter(id=pic_id).first()
    license_plate = result.result
    province = result.province
    return JsonResponse({'province': province,'license_plate':license_plate})



总结 :

本文所设计和开发的是一个烟雾系统,本系统是一个软件,选择的c/s结构进行开发的,本系统开发所采用的python等技术,这些技术是本人在大学期间非常熟悉和进行了深度钻研的技术,可以保证网站的正常开发,不会在中途因为技术问题出现错误。而且这两种技术应用非常的广泛,如果在开发网站的过程中遇到了啥问题,在网上也可以很快的找到答案。另外本系统在数据方面用的mysql数据库,mysql数据库是一个功能非常强大的数据库,语句非常的简单,数据存储和处理的能力非常的强。特别适合本网站。

源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paterWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值