基于百度识别车牌

您所在的位置:网站首页 百度图片识别皮肤病 基于百度识别车牌

基于百度识别车牌

2023-06-18 08:50| 来源: 网络整理| 查看: 265

开发工具准备: 开发工具:PyCharm Python内置模块:os、time、datetime 第三方模块:pygame、opencv-python、pandas、matplotlib、baidu-aip pygame模块:实现项目主窗体 opencv-python模块:调用摄像头进行拍照 pandas模块:数据处理(创建保存数据文件) baidu-aip模块:进行车牌识别获取车牌号 matplotlib模块:绘制柱状图

目录

一、实现窗体

1.1 实现代码

1.2 实现结果显示

1.3 背景颜色选择,选择自己喜欢的颜色

二、获取图片显示到窗口中

1.1 实现代码

1.2 实现结果

 三、申请百度key识别车牌

1.1 进入官网:https://ai.baidu.com/

 1.2 识别车牌模块

1.3  按钮设置模块

1.4 在main.py主文件中调用按钮模块,在while循环里面创建“识别”按钮。

1.5 效果显示

1.6  百度识别的优势

 

一、实现窗体 1.1 实现代码 import pygame size=1000,484 # 窗体大小 FPS=60 # 设置帧率(屏幕每秒的刷新次数) # 设置背景颜色 #DARKBLUE=(73,119,142) DARKBLUE=(218,112,214) BG=DARKBLUE # 1.初始化 pygame.init() # 2.设置窗体名称 pygame.display.set_caption('智能停车场车牌识别计费系统') # 3.加载图片,设置图标 ic_launcher=pygame.image.load('img/img.png') pygame.display.set_icon(ic_launcher) # 4.设置窗体大小、背景颜色 screen=pygame.display.set_mode(size) screen.fill(BG) # 游戏循环帧率设置(控制程序运行时间) clock=pygame.time.Clock() # 主线程 while True: for event in pygame.event.get(): # 关闭页面游戏退出 if event.type==pygame.QUIT: pygame.quit() exit() pygame.display.flip() # 更新界面 clock.tick(FPS) # 控制游戏最大帧率为60 1.2 实现结果显示

 

 

1.3 背景颜色选择,选择自己喜欢的颜色

各种颜色RGB值

■RGB(255,192,203)■★●◆pink(粉红)

■RGB(220,20,60)■★●◆crimson(腥红)

■RGB(255,240,245)■★●◆lavenderblush(苍白的紫罗兰红)

■RGB(219,112,147)■★●◆palevioletred(脸红的淡紫红)

■RGB(255,105,180)■★●◆hotpink(热情的粉红)

■RGB(199,21,133)■★●◆mediumvioletred(适中的紫罗兰红)

■RGB(218,112,214)■★●◆orchid(兰花紫)

■RGB(216,191,216)■★●◆thistle(苍紫)

■RGB(221,160,221)■★●◆plum(轻紫)

■RGB(238,130,238)■★●◆violet(紫罗兰)

■RGB(255,0,255)■★●◆magenta(洋紫)

■RGB(255,0,255)■★●◆fuchsia(紫红)

■RGB(139,0,139)■★●◆darkmagenta(深洋紫)

■RGB(128,0,128)■★●◆purple(紫)

■RGB(186,85,211)■★●◆mediumorchid(适中的兰花紫)

■RGB(148,0,211)■★●◆darkviolet(深紫罗兰)

■RGB(75,0,130)■★●◆indigo(靓青)

■RGB(138,43,226)■★●◆blueviolet(蓝紫罗兰)

■RGB(147,112,219)■★●◆mediumpurple(适中的紫)

■RGB(123,104,238)■★●◆mediumslateblue(适中的的板岩蓝)

■RGB(106,90,205)■★●◆slateblue(板岩蓝)

■RGB(72,61,139)■★●◆darkslateblue(深板岩蓝)

■RGB(230,230,250)■★●◆lavender(熏衣草花的淡紫)

■RGB(248,248,255)■★●◆ghostwhite(幽灵白)

■RGB(0,0,255)■★●◆blue(蓝)

■RGB(0,0,205)■★●◆mediumblue(适中的蓝)

■RGB(25,25,112)■★●◆midnightblue(午夜蓝)

■RGB(0,0,139)■★●◆darkblue(深蓝)

■RGB(0,0,128)■★●◆navy(海军蓝)

■RGB(65,105,225)■★●◆royalblue(皇家蓝)

■RGB(100,149,237)■★●◆cornflowerblue(矢车菊蓝)

■RGB(176,196,222)■★●◆lightsteelblue(淡钢蓝)

■RGB(119,136,153)■★●◆lightslategray(浅石板灰)

■RGB(112,128,144)■★●◆slategray(石板灰)

■RGB(30,144,255)■★●◆dodgerblue(道奇蓝)

■RGB(240,248,255)■★●◆aliceblue(爱丽丝蓝)

■RGB(70,130,180)■★●◆steelblue(钢蓝)

■RGB(135,206,250)■★●◆lightskyblue(淡天蓝)

■RGB(135,206,235)■★●◆skyblue(天蓝)

■RGB(0,191,255)■★●◆deepskyblue(深天蓝)

■RGB(173,216,230)■★●◆lightblue(淡蓝)

■RGB(176,224,230)■★●◆powderblue(火药蓝)

■RGB(95,158,160)■★●◆cadetblue(军校蓝)

■RGB(240,255,255)■★●◆azure(蔚蓝)

■RGB(224,255,255)■★●◆lightcyan(淡青)

■RGB(175,238,238)■★●◆paleturquoise(苍白的宝石绿)

■RGB(0,255,255)■★●◆cyan(青)

■RGB(0,255,255)■★●◆aqua(水绿)

■RGB(0,206,209)■★●◆darkturquoise(深宝石绿)

■RGB(47,79,79)■★●◆darkslategray(深石板灰)

■RGB(0,139,139)■★●◆darkcyan(深青色)

■RGB(0,128,128)■★●◆teal(水鸭色)

■RGB(72,209,204)■★●◆mediumturquoise(适中的宝石绿)

■RGB(32,178,170)■★●◆lightseagreen(浅海洋绿)

■RGB(64,224,208)■★●◆turquoise(宝石绿)

■RGB(127,255,212)■★●◆aquamarine(碧绿)

■RGB(102,205,170)■★●◆mediumaquamarine(适中的碧绿)

■RGB(0,250,154)■★●◆mediumspringgreen(适中的春天绿)

■RGB(245,255,250)■★●◆mintcream(薄荷奶油)

■RGB(0,255,127)■★●◆springgreen(春天绿)

■RGB(60,179,113)■★●◆mediumseagreen(适中的海洋绿)

■RGB(46,139,87)■★●◆seagreen(海洋绿)

■RGB(240,255,240)■★●◆honeydew(浅粉红)

■RGB(144,238,144)■★●◆lightgreen(浅绿)

■RGB(152,251,152)■★●◆palegreen(苍白绿)

■RGB(143,188,143)■★●◆darkseagreen(深海洋绿)

■RGB(50,205,50)■★●◆limegreen(柠檬绿)

■RGB(0,255,0)■★●◆lime(柠檬)

■RGB(34,139,34)■★●◆forestgreen(森林绿)

■RGB(127,255,0)■★●◆chartreuse(查特酒绿)

■RGB(124,252,0)■★●◆lawngreen(草坪绿)

■RGB(173,255,47)■★●◆greenyellow(绿黄)

■RGB(85,107,47)■★●◆darkolivegreen(深橄榄绿)

■RGB(154,205,50)■★●◆yellowgreen(黄绿)

■RGB(107,142,35)■★●◆olivedrab(橄榄褐)

■RGB(245,245,220)■★●◆beige(米色)

■RGB(250,250,210)■★●◆lightgoldenrodyellow(浅秋黄)

■RGB(255,255,240)■★●◆ivory(象牙白)

■RGB(255,255,224)■★●◆lightyellow(浅黄)

■RGB(255,255,0)■★●◆yellow(黄)

■RGB(128,128,0)■★●◆olive(橄榄)

■RGB(189,183,107)■★●◆darkkhaki(深卡其布)

■RGB(255,250,205)■★●◆lemonchiffon(柠檬沙)

■RGB(238,232,170)■★●◆palegoldenrod(灰秋)

■RGB(240,230,140)■★●◆khaki(卡其布)

■RGB(255,215,0)■★●◆gold(金)

■RGB(255,248,220)■★●◆cornsilk(玉米)

■RGB(218,165,32)■★●◆goldenrod(秋)

■RGB(184,134,11)■★●◆darkgoldenrod(深秋)

■RGB(255,250,240)■★●◆floralwhite(白花)

■RGB(253,245,230)■★●◆oldlace(浅米色)

■RGB(245,222,179)■★●◆wheat(小麦)

■RGB(255,228,181)■★●◆moccasin(鹿皮)

■RGB(255,165,0)■★●◆orange(橙)

■RGB(255,239,213)■★●◆papayawhip(木瓜)

■RGB(255,235,205)■★●◆blanchedalmond(漂白后的杏仁)

■RGB(255,222,173)■★●◆navajowhite(耐而节白)

■RGB(250,235,215)■★●◆antiquewhite(古白)

■RGB(210,180,140)■★●◆tan(晒)

■RGB(222,184,135)■★●◆burlywood(树干)

■RGB(255,228,196)■★●◆bisque(乳脂)

■RGB(255,140,0)■★●◆darkorange(深橙色)

■RGB(250,240,230)■★●◆linen(亚麻)

■RGB(205,133,63)■★●◆peru(秘鲁)

■RGB(244,164,96)■★●◆sandybrown(沙棕)

■RGB(210,105,30)■★●◆chocolate(巧克力)

■RGB(192,14,235)■★●◆chocolatesaddlebrown(马鞍棕)

■RGB(255,245,238)■★●◆seashell(海贝)

■RGB(160,82,45)■★●◆sienna(土黄赭)

■RGB(255,160,122)■★●◆lightsalmon(浅肉)

■RGB(255,127,80)■★●◆coral(珊瑚)

■RGB(255,69,0)■★●◆orangered(橙红)

■RGB(255,99,71)■★●◆tomato(番茄色)

■RGB(255,228,225)■★●◆mistyrose(雾中玫瑰)

■RGB(250,128,114)■★●◆salmon(肉)

■RGB(255,250,250)■★●◆snow(雪)

■RGB(240,128,128)■★●◆lightcoral(浅珊瑚)

■RGB(188,143,143)■★●◆rosybrown(玫瑰棕)

■RGB(205,92,92)■★●◆indianred(浅粉红)

■RGB(255,0,0)■★●◆red(红)

■RGB(165,42,42)■★●◆brown(棕)

■RGB(178,34,34)■★●◆firebrick(火砖)

■RGB(139,0,0)■★●◆darkred(深红)

■RGB(128,0,0)■★●◆maroon(粟色)

■RGB(255,255,255)■★●◆white(白)

■RGB(245,245,245)■★●◆whitesmoke(烟白)

■RGB(220,220,220)■★●◆gainsboro(赶死部落)

■RGB(211,211,211)■★●◆lightgrey(浅灰)

■RGB(192,192,192)■★●◆silver(银白)

■RGB(169,169,169)■★●◆darkgray(深灰)

■RGB(105,105,105)■★●◆dimgray(暗灰)

■RGB(0,0,0)■★●◆black(黑)

二、获取图片显示到窗口中 1.1 实现代码 import pygame import cv2 size=1000,484 # 窗体大小 FPS=60 # 设置帧率(屏幕每秒的刷新次数) # 设置背景颜色 DARKBLUE=(73,119,142) BG=DARKBLUE # 1.初始化 pygame.init() # 2.设置窗体名称 pygame.display.set_caption('智能停车场车牌识别计费系统') # 3.加载图片,设置图标 ic_launcher=pygame.image.load('./img/img.png') pygame.display.set_icon(ic_launcher) # 4.设置窗体大小、背景颜色 screen=pygame.display.set_mode(size) screen.fill(BG) # 游戏循环帧率设置(控制程序运行时间) clock=pygame.time.Clock() # 主线程 while True: # 加载图像 image = pygame.image.load('./车牌图片/0.jpg') # 设置图片大小 image = pygame.transform.scale(image, (640, 480)) # 绘制视频画面 screen.blit(image, (2, 2)) for event in pygame.event.get(): # 关闭页面游戏退出 if event.type==pygame.QUIT: pygame.quit() exit() pygame.display.flip() # 更新界面 clock.tick(FPS) # 控制游戏最大帧率为60 1.2 实现结果

 三、申请百度key识别车牌 1.1 进入官网:https://ai.baidu.com/

点击右上角的控制台,进行登录;登录成功之后,在左侧栏目中依次选择【人工智能】→【图像识别】再点击【创建应用】,应用名称和应用类型可以自己写,【接口选择】部分把【文字识别】里面的【车牌识别】选上,其他部分可以不管。创建成功之后界面如下:

 

再把这3个信息写到file/key.txt文件里面,格式如下:

 1.2 识别车牌模块 from aip import AipOcr import os #百度识别车牌 filename='file/key.txt' # 记录申请的key的文件位置 if os.path.exists(filename): # 判断文件是否存在 with open(filename,"r") as file: # 以只读方式打开文件 dictkey=eval(file.readlines()[0]) # 读取全部内容,并且转换为字典 APP_ID=dictkey['APP_ID'] # 获取申请的APIID API_KEY=dictkey['API_KEY'] # 获取申请的APIKEY SECRET_KEY=dictkey['SECRET_KEY'] # 获取申请的SECRETKEY else: print("请先在file目录下创建key.txt") #初始化AipOcr对象 client=AipOcr(APP_ID,API_KEY,SECRET_KEY) #根据文件返回车牌号 def getcn(): # 读取图片 with open('file/test.jpg','rb') as fp: image=fp.read() results=client.licensePlate(image)['words_result']['number'] # 调用车牌识别 print('车牌号:'+results) # 输出车牌号 return results 1.3  按钮设置模块 import pygame #自定义按钮 class Button(): #msg为要在按钮中显示的文本 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 # 设置按钮的rect对象颜色为深蓝 self.text_color=text_color # 设置文本的颜色为白色 # 1.设置文本字体与大小 self.font=pygame.font.SysFont('SimHei',size) # 2.设置按钮大小 self.rect=pygame.Rect(0,0,self.width,self.height) # 3.创建按钮的rect对象,并设置按钮的中心位置 self.rect.centerx=centerxy[0]-self.width/2+2 self.rect.centery=centerxy[1]-self.height/2+2 # 4.填充颜色 self.screen.fill(self.button_color, self.rect) #渲染图像 self.deal_msg(msg) def deal_msg(self,msg): '''将msg渲染为图像,并将其在按钮上居中''' # 5.将文本写到按钮上 self.msg_img=self.font.render(msg,True,self.text_color,self.button_color) # 6.设置文本在按钮上的位置:文本的中心就是按钮的中心(即文本居中) self.msg_img_rect=self.msg_img.get_rect() self.msg_img_rect.center=self.rect.center # 7.绘制到屏幕上 self.screen.blit(self.msg_img, self.msg_img_rect) 1.4 在main.py主文件中调用按钮模块,在while循环里面创建“识别”按钮。

并且判断单击的位置是否为按钮的位置,如果是,就调用车牌识别模块ocrutil的getcn()方法进行车牌识别,代码如下:

import pygame import pandas as pd import os import btn import ocrutil size=1000,484 # 窗体大小 FPS=60 # 设置帧率(屏幕每秒的刷新次数) # 设置背景颜色 DARKBLUE=(73,119,142) BG=DARKBLUE #定义颜色 BLAK=(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) #获取当前项目的路径 cdir=os.getcwd() # 1.初始化 pygame.init() # 2.设置窗体名称 pygame.display.set_caption('智能停车场车牌识别计费系统') # 3.加载图片,设置图标 ic_launcher=pygame.image.load('img/img.png') pygame.display.set_icon(ic_launcher) # 4.设置窗体大小、背景颜色 screen=pygame.display.set_mode(size) screen.fill(BG) # try: # cam=cv2.VideoCapture(0) # 创建摄像头实例 # except: # print('请连接摄像头') # 游戏循环帧率设置(控制程序运行时间) clock=pygame.time.Clock() # 主线程 while True: # # 从摄像头读取图片 # sucess, img = cam.read() # # 保存图片 # cv2.imwrite('file/test.jpg', img) # 加载图像 image = pygame.image.load('./车牌图片/0.jpg') # 设置图片大小 image = pygame.transform.scale(image, (640, 480)) # 绘制视频画面 screen.blit(image, (2, 2)) # 创建识别按钮 btn.Button(screen, (640, 480), 150, 60, BLUE, WHITE, "识别", 25) for event in pygame.event.get(): # 关闭页面游戏退出 if event.type==pygame.QUIT: pygame.quit() exit() elif event.type==pygame.MOUSEBUTTONDOWN: print(str(event.pos[0])+':'+str(event.pos[1])) #识别按钮 if 492


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3