main.py
# -*- coding: utf-8 -*- # @Time : 2021-01-19 16:33 # @Author : Zhenghui.Lyu # @Email : lzhfootmark@163.com # @File : main.py import pygame import cv2 from pandas import DataFrame import os import pandas as pd import openpyxl import btn import ocrutil cdir = os.getcwd() path = cdir + '/datafile/' if not os.path.exists(path + '停车场车辆表.xlsx'): # os.makedirs(path) carnfile = DataFrame(columns=['carnumber', 'date', 'price', 'state']) carnfile.to_excel(path + '停车场车辆表.xlsx', sheet_name='data') carnfile.to_excel(path + '停车场信息表.xlsx', sheet_name='data') BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 255, 0) BLUE = (72, 61, 139) GRAY = (96, 96, 96) RED = (220, 20, 60) YELLOW = (255, 255, 0) size = 1000, 484 FPS = 60 DARKBLUE = (73, 119, 142) BG = DARKBLUE pygame.init() pygame.display.set_caption('智能停车场车牌识别系统') # 窗体名称 ic_launcher = pygame.image.load('ic_launcher.png') pygame.display.set_icon(ic_launcher) screen = pygame.display.set_mode(size) screen.fill(BG) clock = pygame.time.Clock() Running = True try: cam = cv2.VideoCapture(0) except: print('请连接摄像头') while Running: # sucess, img = cam.read() # cv2.imwrite('file/test.jpg', img) # image = pygame.image.load('file/test.jpg') # image = pygame.transform.scale(image, (640, 480)) # screen.blit(image, (2, 2)) sucess, img = cam.read() cv2.imwrite('file/test.jpg', img) image = pygame.image.load('file/test.jpg') image = pygame.transform.scale(image, (640, 480)) screen.blit(image, (2, 2)) button_go = btn.Button(screen, (640, 480), 150, 60, BLUE, WHITE, '识别', 25) button_go.draw_button() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() elif event.type == pygame.MOUSEBUTTONDOWN: if 492 <= event.pos[0] <= 642 and 422 <= event.pos[1] <= 482: print('点击识别') try: carnumber = ocrutil.getcn() except: print('识别错误') continue pass pygame.display.flip() clock.tick(FPS) cam.release()
btn.py
# -*- coding: utf-8 -*- # @Time : 2021-01-21 03:41 # @Author : Zhenghui.Lyu # @Email : lzhfootmark@163.com # @File : btn.py import pygame class Button(): def __init__(self, screen, centerxy, width, height, button_color, text_color, msg, size): self.screen = screen self.width, self.height = width, height self.button_color = button_color self.text_color = text_color self.font = pygame.font.SysFont('simsun', size) self.rect = pygame.Rect(0, 0, self.width, self.height) self.rect.centerx = centerxy[0] - self.width / 2 + 2 self.rect.centery = centerxy[1] - self.height / 2 + 2 self.deal_msg(msg) def deal_msg(self, msg): self.msg_img = self.font.render(msg, True, self.text_color, self.button_color) self.msg_img_rect = self.msg_img.get_rect() self.msg_img_rect.center = self.rect.center def draw_button(self): self.screen.fill(self.button_color, self.rect) self.screen.blit(self.msg_img, self.msg_img_rect)
ocrutil.py
# -*- coding: utf-8 -*- # @Time : 2021-01-19 21:56 # @Author : Zhenghui.Lyu # @Email : lzhfootmark@163.com # @File : ocrutil from aip import AipOcr import os filename = 'file/key.txt' # 注意txt的详细格式:{'APP_ID':'申请的APP_ID','API_KEY':'申请的API_KEY','SECRET_KEY':'申请的SECRET_KEY'} if os.path.exists(filename): with open(filename, 'r') as file: dictkey = eval(file.readlines()[0]) APP_ID = dictkey['APP_ID'] API_KEY = dictkey['API_KEY'] SECRET_KEY = dictkey['SECRET_KEY'] else: print('请先创建key.txt') client = AipOcr(APP_ID, API_KEY, SECRET_KEY) def get_file_content(filepath): with open(filepath, 'rb') as fp: return fp.read() def getcn(): image = get_file_content('file/test.jpg') result = client.licensePlate(image)['words_result']['number'] print(result) return result #getcn()