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