调用摄像头,使用百度API识别图片中的车辆车牌号码


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()

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM