車牌檢測和識別的Python應用軟件實現
1.車牌檢測和識別項目介紹
車牌的檢測和識別的應用非常廣泛,比如交通違章車牌追蹤,小區或地下車庫門禁。在對車牌識別和檢測的過程中,因為車牌往往是規整的矩形,長寬比相對固定,色調紋理相對固定,常用的方法有:基于形狀、基于色調、基于紋理、基于文字特征等方法,近年來隨著深度學習的發展也會使用目標檢測的一些深度學習方法。該項目主要的流程如下圖所示:
1.輸入原始圖片,通過二值化,邊緣檢測,和基于色調的顏色微調等辦法檢測出原圖中的車牌號的位置;
2.把檢測到的車牌(ROI)裁剪,為車牌號的識別做準備;
3.基于裁剪的車牌號,使用直方圖的波峰波谷分割裁剪的車牌號(如上圖中的第3步)
4.訓練機器學習模型做車牌識別,這里訓練了2個SVM,一個SVM用來識別省份簡稱(如 魯),另一個SVM用來識別字母和數字。
5.通過PyQt5把整個算法封裝成GUI程序,并打包發布安裝軟件。
2.項目代碼解析
下圖描述了整個項目的代碼結構,可以訪問https://github.com/DataXujing/vehicle-license-plate-recognition 查看,其結構如下:
3.項目演示
可以通過訪問項目地址 ( https://github.com/DataXujing/vehicle-license-plate-recognition )查看整個應用,或者訪問安裝程序下載地址 (https://pan.baidu.com/s/1IazbGFLlQkb8BQmK_EAeRA 提取碼:v103 )安裝安裝程序進行測試,這里展示一些識別結果和測試視頻:
4.TODO
目前識別的效果針對于某些場景下仍然很不理想,技術層面上的主要原因有兩個,一個是車牌檢測算法并沒有檢測到車牌(這主要是檢測算法的問題),可以嘗試一些目標檢測的算法,比如Faster R-CNN(速度可能慢一些),YOLO系列, SSD系列等的經典的目標檢測算法,然后做矯正或進一步的區域篩選;另一個原因是是在識別算法上,本次我們僅是基于少量的訓練數據訓練了SVM,可以嘗試增加訓練集并把模型替換成一些更復雜的機器學習模型如XGBoost,LightGBM,CatBoost等模型或使用CNN訓練一個多分類的深度學習模型, 亦或者是直接考慮一些基于Attention的CNN-RNN架構的OCR識別模型。
Reference
- https://blog.csdn.net/sumkee911/article/details/79435983
- 車牌號識別 python + opencv
- License-Plate-Recognition
- .車牌識別(一)-車牌定位
- 在PyQt5中美化和裝扮圖形界面
好啦!今天的分享到這里就結束了,希望大家持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!聲明:文章轉載于網絡,版權歸原作者所有,如有侵權,請及時聯系刪除!