調用攝像頭,使用百度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