基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

1、项目介绍

技术栈:
Python语言、Django框架、MySQL数据库、Echarts可视化、车牌识别、停车场管理、停车收费、HTML

亮点功能:
[1]用户管理,可增加月卡,季卡,半年卡,年卡,临时停车等;
[2]可配置停车场停车位数据,可在线看数据;
[3]图像识别车牌号;
[4]调用百度云接口进行车牌识别,识别准确率接近98%,相当优秀;
[5]Python语言开发+采用Django框架搭建网页,采用Echarts将数据以可视化大屏的方式呈现,实时查看停车场的数据情况。

智能停车场管理系统是基于人工智能和物联网技术的创新应用,旨在解决城市停车难题、提高停车场利用率和管理效率。随着城市化进程的加速,汽车数量的不断增加,停车需求日益紧张,传统的停车场管理方式已经无法满足现代社会的需求。
传统的停车场管理方式存在许多问题,如停车位分配不合理、车辆停放难以控制、停车费用难以管理等。这些问题导致停车场的利用率低下,用户的停车体验不佳,并且给停车场管理者带来了很大的困扰。因此,研发智能停车场管理系统成为了一项重要的研究课题。

2、项目界面

(1)停车场收费可视化大屏

基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第1张图片

(2)停车场停车信息

基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第2张图片

(3)上传车牌图片进行车牌识别
基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第3张图片

(4)车牌识别

基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第4张图片

(5)停车缴费信息
基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第5张图片

(6)停车场记录信息+收费信息
基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第6张图片

(7)用户信息

基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第7张图片

(8)后台数据管理

基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第8张图片

(9)系统功能框架图

基于python车牌识别系统 车辆计费管理系统 可视化大屏 Django框架(源码)✅_第9张图片

3、项目说明

选题基于现阶段时代背景,利用Python语言实现智能停车场管理系统,数据保存到sqlite数据库中,搭建Django框架网页展示方便数据管理,本系统实现如下功能:
[1]用户管理,为用户增加月卡,季卡,半年卡,年卡,临时停车等;
[2]可配置停车场停车位数据,可在线看数据;
[3]图像识别车牌号码;
[4]调用百度云接口进行车牌识别;
[5]Python语言开发+采用Django框架搭建网页,采用Echarts将数据以可视化大屏的方式呈现,实时查看停车场的数据情况和管理停车场。
系统功能图如下所示:

智能停车场管理系统是基于人工智能和物联网技术的创新应用,旨在解决城市停车难题、提高停车场利用率和管理效率。随着城市化进程的加速,汽车数量的不断增加,停车需求日益紧张,传统的停车场管理方式已经无法满足现代社会的需求。
传统的停车场管理方式存在许多问题,如停车位分配不合理、车辆停放难以控制、停车费用难以管理等。这些问题导致停车场的利用率低下,用户的停车体验不佳,并且给停车场管理者带来了很大的困扰。因此,研发智能停车场管理系统成为了一项重要的研究课题。
智能停车场管理系统通过利用人工智能和物联网技术,实现了对停车场的智能化管理。系统通过车辆识别、车位监控、停车位导航等功能,提高了停车场的利用率和管理效率。同时,系统还可以提供实时的停车位信息,方便用户快速找到空闲车位,并且可以通过手机App进行在线支付,提高了用户的停车体验。此外,智能停车场管理系统还可以通过数据分析和预测,帮助停车场管理者制定更合理的管理策略,提高停车场的运营效益。
因此,研究智能停车场管理系统具有重要意义,可以有效解决城市停车难题,提高停车场的利用率和管理效率,为城市交通管理和停车服务提供创新解决方案。

4、核心代码


import json
import os
import io

from django.shortcuts import render, redirect, HttpResponse
from app01 import models
from functools import wraps
import datetime
import re
from utils.paginater import Paginater
import time
import random
from aip import AipOcr
import qrcode
from django.utils.six import BytesIO
import numpy as np
from PIL import Image


envget = os.environ.get


# 判断是否登录的装饰器
def login_required(func):
    @wraps(func)
    def inner(request, *args, **kwargs):
        is_login = request.session.get('is_login')
        if is_login != 1:
            # 没有登陆
            return redirect('/login/')
        ret = func(request, *args, **kwargs)
        return ret

    return inner


# 车牌识别
def Park_discern(image):

    # 在下面输入自己的百度API,下面是测试账号,切勿滥用
    app_id = '30890278'
    api_key = 'fbqAD9phrEdYtCUDea6QAzq8'
    secret_key = 'IMR0IV7RfHK6U6mA5hUN0SFOOLfZfw2L'

    # app_id = envget('BAIDU_APP_ID')
    # api_key = envget('BAIDU_API_KEY')
    # secret_key = envget('BAIDU_SECRET_KEY')

    if not app_id or not api_key or not secret_key:
        raise ValueError('Baidu OCR setting can not be empty')
    # 创建客户端对象
    client = AipOcr(app_id, api_key, secret_key)
    # 建立连接的超时时间,单位为毫秒
    client.setConnectionTimeoutInMillis(5000)
    # 通过打开的连接传输数据的超时时间,单位为毫秒
    client.setSocketTimeoutInMillis(5000)
    res = client.licensePlate(image)
    return res


# 时间计算
def chargecount(start_time, end_time):
    start_seconds = time.mktime(start_time.timetuple()) * 1000 + start_time.microsecond / 1000
    end_seconds = time.mktime(end_time.timetuple()) * 1000 + end_time.microsecond / 1000
    time_span = end_seconds - start_seconds
    day_span = int(time_span / 1000 / 3600 / 24)
    hour_span = int(time_span / 1000 / 3600 % 24)
    minute_span = int(time_span / 1000 / 60 % 60)
    # 判断是否为同一天
    if start_time.date() == end_time.date():
        money = 0
        # 同一天
        # 判断是否只停车半小时
        if hour_span == 0 and minute_span < 30:
            print(start_time, end_time, day_span, hour_span, minute_span, money)
            return money
        else:
            # 超过半小时
            # 判断是早晨还是晚上
            if 7 <= start_time.hour < 19:
                # 早晨停车
                if 7 <= end_time.hour < 19:
                    # 在晚间之前离开
                    if minute_span != 0:
                        money = 2 * (hour_span + 1)
                    else:
                        money = 2 * hour_span
                else:
                    # 在晚间离开
                    if minute_span != 0:
                        money = (18 - start_time.hour) * 2 + (hour_span - 17 + start_time.hour) * 3
                    else:
                        money = (18 - start_time.hour) * 2 + (hour_span - 18 + start_time.hour) * 3
            elif start_time.hour >= 19:
                # 晚上停车
                if minute_span != 0:
                    money = 3 * (hour_span + 1)
                else:
                    money = 3 * hour_span
            else:
                if end_time.hour < 7:
                    if minute_span != 0:
                        money = 3 * (hour_span + 1)
                    else:
                        money = 3 * hour_span
                elif 7 <= end_time.hour < 16:
                    if minute_span != 0:
                        money = (6 - start_time.hour) * 3 + 2 * (1 + start_time.hour)
                    else:
                        money = (6 - start_time.hour) * 3 + 2 * (1 + start_time.hour)
                    pass
                else:
                    money = 18
        if money > 18:
            money = 18
            print(start_time, end_time, day_span, hour_span, minute_span, money)
            return money
        else:
            print(start_time, end_time, day_span, hour_span, minute_span, money)
            return money
    else:
        # 非同一天
        money = 0
        money_day = 0
        if day_span > 0:
            # 停留超过24h
            new_start_time = start_time + datetime.timedelta(days=day_span)
            print(new_start_time)
            money_day = 18 * day_span
            # 在判断离开时超过24h收费的部分
            if 7 <= new_start_time.hour < 19:
                if 7 <= end_time.hour < 19:
                    if minute_span != 0:
                        money = 2 * (hour_span + 1)
                        print(1)
                    else:
                        money = 2 * hour_span
                        print(2)
                elif 0 <= end_time.hour < 7 or 19 <= end_time.hour <= 23:
                    if minute_span != 0:
                        money = (18 - new_start_time.hour) * 2 + (hour_span - 17 + start_time.hour) * 3
                        print(3)
                    else:
                        money = (18 - new_start_time.hour) * 2 + (hour_span - 18 + start_time.hour) * 3
                        print(4)

            elif new_start_time.hour >= 19:
                if minute_span != 0:
                    money = 3 * (hour_span + 1)
                    print(5)
                else:
                    money = 3 * hour_span
                    print(6)
            else:
                if end_time.hour < 7:
                    if minute_span != 0:
                        money = 3 * (hour_span + 1)
                        print(7)
                    else:
                        money = 3 * hour_span
                        print(8)
                elif 7 <= end_time.hour < 16:
                    if minute_span != 0:
                        money = (6 - new_start_time.hour) * 3 + 2 * (1 + hour_span)
                        print(9)
                    else:
                        money = (6 - new_start_time.hour) * 3 + 2 * hour_span
                        print(10)
                    pass
                else:
                    money = 18
            if money > 18:
                money = 18 + money_day
                print(start_time, end_time, day_span, hour_span, minute_span, money)
                return money
            else:
                money += money_day
                print(start_time, end_time, day_span, hour_span, minute_span, money)
                return money
        else:
            # 未超过24h,但不是同一天
            if hour_span == 0 and minute_span < 30:
                print(start_time, end_time, day_span, hour_span, minute_span, money)
                return money
            else:
                if start_time.hour <= 18:
                    money = 18
                else:
                    if end_time.hour >= 5:
                        money = 18
                    else:
                        if minute_span != 0:
                            money = 3 * (hour_span + 1)
                        else:
                            money = 3 * hour_span
            if money > 18:
                money = 18
                print(start_time, end_time, day_span, hour_span, minute_span, money)
                return money
            else:
                print(start_time, end_time, day_span, hour_span, minute_span, money)
                return money


def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    else:
        # 处理POST请求的逻辑
        # 获取到用户提交的用户名和密码
        account = request.POST.get('account')
        pwd = request.POST.get('pwd')
        if not account or not pwd:
            return render(request, 'login.html', {'error': '账号密码不能为空!'})
        else:
            try:
                check = models.Administrator.objects.get(account=account)
                if check.password == pwd:
                    request.session['is_login'] = 1
                    return redirect('/index/')
                else:
                    return render(request, 'login.html', {'error': '输入账号密码错误!'})
            except Exception as e:
                return render(request, 'login.html', {'error': '输入账号密码错误!'})


# 判断是否会员过期的装饰器
def vip_valid(func):
    @wraps(func)
    def inner(*args, **kwargs):
        user_obj = models.User.objects.all()
        now_time = datetime.datetime.now()
        for user in user_obj:
            if now_time > user.endtime:
                # 过期
                user.level = 0
                user.save()
                # 如果车辆在停车场,则出行需要补交一定费用
                try:
                    car_obj = models.Car_manage.objects.get(carnum=user.carnum)
                    car_obj.genre = 2
                    car_obj.save()
                    if not models.Extra_charge.objects.filter(carnum=user.carnum):
                        models.Extra_charge.objects.create(carnum=user.carnum, vip_begintime=user.endtime,
                                                           is_valid=True, money=0)
                    else:
                        models.Extra_charge.objects.filter(carnum=user.carnum).update(vip_begintime=user.endtime,
                                                                                      vip_deadline=None,
                                                                                      is_valid=True, money=0)
                except Exception as e:
                    pass
        ret = func(*args, **kwargs)
        return ret

    return inner

5、源码获取

由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看获取联系方式

你可能感兴趣的:(biyesheji0001,biyesheji0002,毕业设计,python,django,大数据,机器学习,车牌识别,百度云,毕业设计)