車牌識(shí)別基礎(chǔ)功能演示
摘要:
車牌識(shí)別系統(tǒng)(Vehicle License Plate Recognition,VLPR)
是指能夠檢測(cè)到受監(jiān)控路面的車輛并自動(dòng)提取車輛牌照信息(含漢字字符、英文字母、阿拉伯?dāng)?shù)字及號(hào)牌顏色)進(jìn)行處理的技術(shù)。車牌識(shí)別是現(xiàn)代智能交通系統(tǒng)中的重要組成部分之一,應(yīng)用十分廣泛。本文詳細(xì)介紹了車牌識(shí)別技術(shù)的基本實(shí)現(xiàn)原理
,并且基于python
與pyqt
開發(fā)了一套功能完整的車牌識(shí)別的停車場(chǎng)管理系統(tǒng)軟件
,實(shí)現(xiàn)了通過圖片或者攝像頭的方式進(jìn)行進(jìn)出停車場(chǎng)車輛車牌自動(dòng)識(shí)別
、車牌登記信息錄入
、已登記車輛有效期時(shí)間管理
、車輛進(jìn)出記錄管理
以及外來車輛收費(fèi)系統(tǒng)
等功能。本文提供了完整的Python代碼和使用教程
,給感興趣的小伙伴參考學(xué)習(xí),完整的代碼資源文件獲取方式見文末
。
點(diǎn)擊跳轉(zhuǎn)至文末《完整源碼及相關(guān)文件》獲取
---1. 前言
車牌識(shí)別系統(tǒng)(Vehicle License Plate Recognition,VLPR) 是指能夠檢測(cè)到受監(jiān)控路面的車輛并自動(dòng)提取車輛牌照信息(含漢字字符、英文字母、阿拉伯?dāng)?shù)字及號(hào)牌顏色)進(jìn)行處理的技術(shù)。車牌識(shí)別是現(xiàn)代智能交通系統(tǒng)中的重要組成部分之一,應(yīng)用十分廣泛。它以數(shù)字圖像處理、模式識(shí)別、計(jì)算機(jī)視覺等技術(shù)為基礎(chǔ),對(duì)攝像機(jī)所拍攝的車輛圖像或者視頻序列進(jìn)行分析,得到每一輛汽車唯一的車牌號(hào)碼,從而完成識(shí)別過程。
車牌識(shí)別技術(shù)主要應(yīng)用領(lǐng)域有停車場(chǎng)收費(fèi)管理,交通流量控制指標(biāo)測(cè)量,車輛定位,汽車防盜,高速公路超速自動(dòng)化監(jiān)管、闖紅燈電子警察、公路收費(fèi)站等等功能。對(duì)于維護(hù)交通安全和城市治安,防止交通堵塞,實(shí)現(xiàn)交通自動(dòng)化管理有著現(xiàn)實(shí)的意義。
博主根據(jù)車牌識(shí)別技術(shù)開發(fā)了本文中介紹的一套功能完整的停車場(chǎng)收費(fèi)與車輛管理系統(tǒng),功能主要包括:進(jìn)出停車場(chǎng)車輛車牌自動(dòng)識(shí)別
、車牌登記信息錄入
、已登記車輛有效期時(shí)間管理
、車輛進(jìn)出記錄管理
以及外來車輛收費(fèi)系統(tǒng)
等功能。
基于該車牌識(shí)別技術(shù),博主經(jīng)過長(zhǎng)時(shí)間開發(fā),總共寫了近3000行代碼
,并且整個(gè)系統(tǒng)經(jīng)過了詳細(xì)的調(diào)試修改。最終開發(fā)了本文介紹的車牌識(shí)別停車場(chǎng)管理系統(tǒng)軟件
【python
與PYQT5
]】,功能主要包括:進(jìn)出停車場(chǎng)車輛車牌自動(dòng)識(shí)別
、車牌登記信息錄入
、已登記車輛有效期時(shí)間管理
、車輛進(jìn)出記錄管理
以及外來車輛收費(fèi)系統(tǒng)
等。
覺得不錯(cuò)的小伙伴,感謝點(diǎn)贊、關(guān)注加收藏哦!更多干貨內(nèi)容持續(xù)更新…文章來源地址http://www.zghlxwxcb.cn/news/detail-488137.html
登錄后的軟件初始界面如下圖所示:
2. 軟件核心功能介紹及效果演示
軟件主要功能包括以下幾個(gè)部分:
1. 登錄注冊(cè)模塊:提供系統(tǒng)的登錄注冊(cè)功能;
2. 車輛信息登記錄入模塊:用于進(jìn)行特殊車輛、月租車輛或業(yè)主車輛的信息管理
,登記指定日期內(nèi)
車輛進(jìn)出不收費(fèi),過期后正常收費(fèi);
3. 車牌進(jìn)出識(shí)別模塊:用于識(shí)別停車場(chǎng)出入車輛的車牌信息,同時(shí)記錄出入時(shí)間,并顯示出入信息、收費(fèi)信息、停車場(chǎng)車位數(shù)量
信息;
4. 已登記錄入車輛信息管理模塊:對(duì)已錄入的車輛信息進(jìn)行搜索、修改、刪除
等管理;
5. 車輛進(jìn)出信息管理模塊:記錄車輛進(jìn)出信息、并對(duì)進(jìn)出車輛進(jìn)出信息搜索、刪除
等管理
6. 人臉識(shí)別記錄模塊:進(jìn)行已錄入的人員進(jìn)行人臉識(shí)別的時(shí)間信息,可用于人員的打卡管理等。
7. 自動(dòng)收費(fèi)模塊:能夠依據(jù)記錄的出入時(shí)間自動(dòng)計(jì)算出入車輛的需要繳納的費(fèi)用。
下面將詳細(xì)介紹各個(gè)模塊的基本功能:
2.1 登錄注冊(cè)功能模塊
本軟件提供了基礎(chǔ)的登錄注冊(cè)功能,對(duì)于新用戶需要先注冊(cè)賬號(hào)才可以進(jìn)行登錄。界面如下:
2.2 車輛信息登記錄入功能模塊
車輛信息登記錄入功能的主要作用是對(duì)特殊車輛、月租車輛或業(yè)主車輛進(jìn)行信息管理
,車輛在登記日期區(qū)間內(nèi),可以免費(fèi)進(jìn)出停車場(chǎng),但是過期后需正常繳費(fèi)??稍谛畔⒐芾斫缑嫘薷娜掌谛畔?。
車輛登記需要進(jìn)行照片采集,可通過上傳照片或者攝像頭拍照的這兩種方式進(jìn)行采集,車牌會(huì)自動(dòng)識(shí)別填入文本框內(nèi)。然后選擇車輛登記有效日期,選填人員信息等內(nèi)容。點(diǎn)擊保存按鈕,即可將信息保存至數(shù)據(jù)庫中。采集的車輛圖片會(huì)默認(rèn)存入data/imgs
目錄中,命名方式為車牌號(hào).jpg
。
車牌信息登記的初始界面如下:
上傳圖片方式采集車輛圖片方式如下:
攝像頭采集車輛圖片方式如下:
先開啟攝像頭,車輛處于合適位置后,點(diǎn)擊拍照按鈕采集,點(diǎn)擊關(guān)閉攝像頭按鈕即可。
采集后的車輛圖片存儲(chǔ)位置data/imgs
目錄下:
2.3 車牌識(shí)別車輛出入及收費(fèi)系統(tǒng)模塊
可通過圖片或者攝像頭的方式,對(duì)出入的車輛進(jìn)行車牌識(shí)別。并顯示車輛信息
,收費(fèi)信息
,停車場(chǎng)車位數(shù)目
等。并且可以通過單選按鈕
來模擬車輛的進(jìn)出,從而顯示不同的出入信息。費(fèi)用計(jì)算方式
:費(fèi)用計(jì)算:不足半小時(shí)免費(fèi),超過每小時(shí)5元,不足1小時(shí)按1小時(shí)算,每24小時(shí)20元封頂。
圖片方式來模擬車輛的進(jìn)入與外出:
車輛進(jìn)入顯示的信息如下:
車輛外出顯示信息如下:
注:登記車輛會(huì)顯示登記剩余天數(shù),外來車輛沒有剩余天數(shù)顯示。
攝像頭方式來模擬車輛的進(jìn)入與外出:
2.4 車輛信息數(shù)據(jù)管理模塊
該界面主要是顯示已登記的車輛信息,支持搜索
及日期、業(yè)主信息等修改
,以及信息刪除
功能。
功能展示如下:
搜索功能
修改、刪除功能:
修改方法:雙擊表中的內(nèi)容后,點(diǎn)擊修改
按鈕,然后點(diǎn)擊保存操作
按鈕,更新數(shù)據(jù)庫。
刪除方法:選中要?jiǎng)h除的行,然后點(diǎn)擊刪除
按鈕,然后點(diǎn)擊保存操作
按鈕,更新數(shù)據(jù)庫。顯示全部
按鈕用于顯示全部已錄入的車輛信息。
2.5 車輛出入記錄模塊
該界面用于記錄車輛的出入信息:包括車牌、出入時(shí)間、車輛類型。
支持搜索
與刪除
信息功能。
**刪除方法:**選中要?jiǎng)h除的行,然后點(diǎn)擊刪除
按鈕,然后點(diǎn)擊保存操作
按鈕,更新數(shù)據(jù)庫。
功能展示如下:
3. 車牌識(shí)別基本原理介紹
3.1 基本原理
車牌識(shí)別系統(tǒng)(Vehicle License Plate Recognition,VLPR) 是指能夠檢測(cè)到受監(jiān)控路面的車輛并自動(dòng)提取車輛牌照信息(含漢字字符、英文字母、阿拉伯?dāng)?shù)字及號(hào)牌顏色)進(jìn)行處理的技術(shù)。車牌識(shí)別技術(shù)應(yīng)用十分廣泛,它是以數(shù)字圖像處理、模式識(shí)別、計(jì)算機(jī)視覺等技術(shù)為基礎(chǔ),對(duì)含有車輛號(hào)牌的圖像進(jìn)行分析處理,從而確定牌照在圖像中的位置,并進(jìn)一步提取和識(shí)別出文本字符,得到每一輛汽車唯一的車牌號(hào)碼,從而完成識(shí)別過程。
車牌識(shí)別的常規(guī)處理過程流程包括:圖像采集、圖像預(yù)處理、車牌定位、字符分割、字符識(shí)別及結(jié)果輸出等處理過程。如下圖所示:
上述各個(gè)流程相輔相成,每個(gè)處理過程均須保證其高效和較高的抗干擾能力,只有這樣才能保證識(shí)別功能達(dá)到滿意的效果,其中車牌定位、字符分割及字符識(shí)別這三個(gè)步驟尤為重要。
車牌定位
車牌定位的主要工作是從靜態(tài)圖片或視頻幀中找到車牌位置,并把車牌從圖像中單獨(dú)分離出來以供后續(xù)處理模塊處理,車牌定位如下圖所示:
車牌定位的本質(zhì)就是車牌目標(biāo)檢測(cè),目前車牌位置檢測(cè)方法主要有以下兩種:
【方法1】基于圖形圖像學(xué)的定位方法
該方法主要有以下幾種方式:(1)基于顏色的定位方法,如彩色邊緣算法、顏色距離和相似度算法等;(2)基于紋理的定位方法,如小波紋理、水平梯度差分紋理等;(3)基于邊緣檢測(cè)的定位方法;(4)基于數(shù)學(xué)形態(tài)的定位方法。
基于圖形圖像學(xué)的定位方法,容易受到外界干擾信息的干擾而造成定位失敗。如基于顏色分析的定位方法中,如果車牌背景顏色與車牌顏色相近,則很難從背景中提取車牌;在基于邊緣檢測(cè)的方法中,車牌邊緣的污損也很容易造成定位失敗。外界干擾信息的干擾也會(huì)欺騙定位算法,使得定位算法生成過多的非車牌候選區(qū)域,增大了系統(tǒng)負(fù)荷。
【方法2】基于機(jī)器學(xué)習(xí)的定位方法
基于機(jī)器學(xué)習(xí)的方法有基于特征工程的定位方法和基于神經(jīng)網(wǎng)絡(luò)的定位方法等。例如通過opencv提供的基于haar特征的級(jí)聯(lián)分類器,訓(xùn)練一個(gè)車牌定位系統(tǒng)。但該方法訓(xùn)練十分費(fèi)時(shí),分類定位的效率也較低。因此當(dāng)前在目標(biāo)定位方面,基于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的方法是主流方法。深度學(xué)習(xí)的檢測(cè)算法主要有Mobilene-SSD、YOLO-v5等,利用大批量的標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練模型,然后利用訓(xùn)練好的模型進(jìn)行車牌區(qū)域檢測(cè)。
字符識(shí)別
當(dāng)車牌區(qū)域被檢測(cè)出來后,如何對(duì)這一區(qū)域中的字符進(jìn)行識(shí)別,主要有兩種思路:
【方法1】首先利用一系列字符分割的算法將車牌中的字符逐個(gè)分開,然后基于深度學(xué)習(xí)進(jìn)行字符分類,得到識(shí)別結(jié)果;
【方法2】直接對(duì)車牌區(qū)域采用端到端的網(wǎng)絡(luò)進(jìn)行識(shí)別。
本文我們直接基于網(wǎng)絡(luò)上開源的HyperLPR 高性能開源中文車牌識(shí)別框架,來進(jìn)行車牌區(qū)域與字符識(shí)別,該方法支持支持python3,支持Windows Mac Linux 樹莓派等。
具體使用方法如下:
【1】導(dǎo)入第三方庫OpenCV和hyperlpr,并讀取一張車牌圖片調(diào)用架構(gòu)中的車牌識(shí)別方法獲得結(jié)果,示例代碼如下:
#導(dǎo)入包
from hyperlpr import *
#導(dǎo)入OpenCV庫
import cv2
#讀入圖片
image = cv2.imread("2.jpg")
#識(shí)別結(jié)果
print(HyperLPR_plate_recognition(image))
代碼運(yùn)行結(jié)果如下,包含了車牌字符:'京EL0662'
、置信度值
:0.9737052321434021、車牌位置坐標(biāo)
:[255, 196, 367, 236]、圖片尺寸形狀
:【3, 518, 690】(3通道,高518,寬690)信息。
(1, 3, 518, 690)
255 196 367 236
[['京EL0662', 0.9737052321434021, [255, 196, 367, 236]]]
下面我們將車牌的識(shí)別結(jié)果信息顯示在圖片上,代碼如下:
# coding:utf-8
# 導(dǎo)入包
from hyperlpr import *
# 導(dǎo)入OpenCV庫
import cv2
from PIL import Image, ImageDraw, ImageFont
import numpy as np
# 定義畫圖函數(shù)
def drawRectBox(image, rect, addText, fontC):
"""
車牌識(shí)別,繪制矩形框與結(jié)果
:param image: 原始圖像
:param rect: 矩形框坐標(biāo)
:param addText:車牌號(hào)
:param fontC: 字體
:return:
"""
# 繪制車牌位置方框
cv2.rectangle(image, (int(round(rect[0])), int(round(rect[1]))),
(int(round(rect[2]) + 15), int(round(rect[3]) + 15)),
(0, 0, 255), 2)
# 繪制字體背景框
cv2.rectangle(image, (int(rect[0] - 1), int(rect[1]) - 25), (int(rect[0] + 120), int(rect[1])), (0, 0, 255), -1, cv2.LINE_AA)
img = Image.fromarray(image)
draw = ImageDraw.Draw(img)
draw.text((int(rect[0] + 1), int(rect[1] - 25)), addText, (255, 255, 255), font=fontC)
imagex = np.array(img)
return imagex
# 讀取選擇的圖片
image = cv2.imread('2.jpg')
all_res = HyperLPR_plate_recognition(image)
# 車牌標(biāo)注的字體
fontC = ImageFont.truetype("Font/platech.ttf", 20, 0)
# all_res為多個(gè)車牌信息的列表,取第一個(gè)車牌信息
lisence, conf, boxes = all_res[0]
image = drawRectBox(image, boxes, lisence, fontC)
cv2.imshow('RecognitionResult', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
上述代碼運(yùn)行結(jié)果如下,可以看到車牌信息與方框被很好的標(biāo)注在了圖片上:
但是,在生活中,我們更多用到的是從視頻中對(duì)車牌進(jìn)行識(shí)別,因此我們只需要對(duì)視頻的每一幀圖片進(jìn)行車牌識(shí)別檢測(cè),然后將檢測(cè)信息繪制上去即可,核心代碼如下:
# 讀取攝像頭
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 車牌標(biāo)注的字體
fontC = ImageFont.truetype("Font/platech.ttf", 20, 0)
while True:
ref, frame = cap.read()
if ref:
# 識(shí)別車牌
all_res = HyperLPR_plate_recognition(frame)
if len(all_res) > 0:
lisence, conf, boxes = all_res[0]
frame = drawRectBox(frame, boxes, lisence, fontC)
cv2.imshow("RecognitionResult", frame)
if cv2.waitKey(10) & 0xFF == ord('q'):
break # 退出
else:
break
識(shí)別結(jié)果如下:
以上便是關(guān)于車牌識(shí)別的基本原理介紹與代碼演示?;谠撥嚺谱R(shí)別技術(shù),最終博主經(jīng)過長(zhǎng)時(shí)間開發(fā),總共干了近3000行代碼
,并且整個(gè)系統(tǒng)經(jīng)過了詳細(xì)的調(diào)試修改。最終開發(fā)了本文介紹的車牌識(shí)別停車場(chǎng)管理系統(tǒng)軟件
【python
與PYQT5
]】,能夠基于車牌識(shí)別很好的實(shí)現(xiàn)進(jìn)出停車場(chǎng)車輛車牌自動(dòng)識(shí)別
、車牌登記信息錄入
、已登記車輛有效期時(shí)間管理
、車輛進(jìn)出記錄管理
以及外來車輛收費(fèi)系統(tǒng)
等功能。
關(guān)于該停車系統(tǒng)的涉及到的完整源碼、UI界面代碼等相關(guān)文件,均已打包上傳,感興趣的小伙伴可以通過下載鏈接自行獲取。
【獲取方式】
關(guān)注文末GZH名片【阿旭算法與機(jī)器學(xué)習(xí)】,回復(fù)【車牌識(shí)別】可獲取下載方式
本文涉及到的完整全部程序文件:包括python源碼、UI文件、測(cè)試圖片、視頻等文件(見下圖),均已打包上傳,按說明配置好環(huán)境后,點(diǎn)擊運(yùn)行即可。
【pycharm打開項(xiàng)目界面如下】
文件夾下的資源顯示如下圖:
注意:該代碼采用Pycharm+Python3.8開發(fā),運(yùn)行界面的主程序?yàn)?code>main.py(不含登錄界面);
login_main.py
(含登錄界面)。為確保程序順利運(yùn)行,請(qǐng)按照環(huán)境配置.txt
配置軟件運(yùn)行環(huán)境。
關(guān)注下方GZH名片【阿旭算法與機(jī)器學(xué)習(xí)】,回復(fù)【車牌識(shí)別】可獲取下載方式
結(jié)束語
以上便是博主開發(fā)的關(guān)于基于OpenCV車牌識(shí)別停車場(chǎng)管理系統(tǒng)的全部?jī)?nèi)容,由于博主能力有限,難免有疏漏之處,希望小伙伴能批評(píng)指正
關(guān)于本篇文章大家有任何建議或意見,也歡迎在評(píng)論區(qū)留言交流!文章來源:http://www.zghlxwxcb.cn/news/detail-488137.html
覺得不錯(cuò)的小伙伴,感謝點(diǎn)贊、關(guān)注加收藏哦!更多干貨內(nèi)容持續(xù)更新…
到了這里,關(guān)于【功能超全】基于OpenCV車牌識(shí)別停車場(chǎng)管理系統(tǒng)軟件開發(fā)【含python源碼+PyqtUI界面+功能詳解】-車牌識(shí)別python 深度學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!