【深度學(xué)習(xí)】你不知道的車牌識別系統(tǒng)
有小伙伴后臺和小白說,能不能推薦幾個適合入門的開源視覺項(xiàng)目,因?yàn)楦鶕?jù)實(shí)際項(xiàng)目和代碼學(xué)起來相對來說比較快。小白收集了一些比較簡單的開源的項(xiàng)目,會陸陸續(xù)續(xù)的分享給大家,文末有源碼地址。
今天首先帶來的是一個車牌識別系統(tǒng)EasyPR。為什么推薦它呢,有兩個原因:1,車牌識別已經(jīng)做的比較成熟了,相對來說是一個比較簡單的項(xiàng)目了。2,這個項(xiàng)目是國內(nèi)團(tuán)隊(duì)寫的,里面的說明文檔全部都是中文,這對很多看英文頭疼的小伙伴來說是再好不過的了。
項(xiàng) 目 簡 介
EasyPR是一個中文的開源車牌識別系統(tǒng),其目標(biāo)是成為一個簡單、高效、準(zhǔn)確的車牌識別引擎。相比于其他的車牌識別系統(tǒng),EasyPR有如下特點(diǎn):
它基于openCV這個開源庫。這意味著你可以獲取全部源代碼,并且移植到j(luò)ava等平臺。
它能夠識別中文。例如車牌為蘇EUK722的圖片,它可以準(zhǔn)確地輸出std:string類型的"蘇EUK722"的結(jié)果。
它的識別率較高。圖片清晰情況下,車牌檢測與字符識別可以達(dá)80%以上的精度。
項(xiàng) 目 效 果
假設(shè)我們有如下的原始圖片,需要識別出中間的車牌字符與顏色:

經(jīng)過EasyPR的第一步處理車牌檢測(PlateDetect)以后,我們獲得了原始圖片中僅包含車牌的圖塊:

接著,我們對圖塊進(jìn)行OCR過程,在EasyPR中,叫做字符識別(CharsRecognize)。我們得到了一個包含車牌顏色與字符的字符串:“藍(lán)牌:蘇EUK722”
這個識別是不是很神奇。什么?小伙伴覺得還不過癮,講解的還不夠詳細(xì),那接下來再接一個示例好了,這回有圖有程序。
代 碼 示 例
EasyPR的調(diào)用非常簡單,下面是一段示例代碼:
CPlateRecognizepr;
pr.setResultShow(false);
pr.setDetectType(PR_DETECT_CMSER);
vector<CPlate>plateVec;
Matsrc = imread(filepath);
int result =pr.plateRecognize(src, plateVec);
我們首先創(chuàng)建一個CPlateRecognize的對象pr,接著設(shè)置pr的屬性。
pr.setResultShow(false);這句話設(shè)置EasyPR是否打開結(jié)果展示窗口,如下圖。設(shè)置為true就是打開,否則就是關(guān)閉。在需要觀看定位結(jié)果時,建議打開,快速運(yùn)行時關(guān)閉。

pr.setDetectType(PR_DETECT_CMSER);這句話設(shè)置EasyPR采用的車牌定位算法。CMER代表文字定位方法,SOBEL和COLOR分別代表邊緣和顏色定位方法。可以通過"|"符號結(jié)合。
pr.setDetectType(PR_DETECT_COLOR| PR_DETECT_SOBEL);除此之外,還可以有一些其他的屬性值設(shè)置:
pr.setLifemode(true);這句話設(shè)置開啟生活模式,這個屬性在定位方法為SOBEL時可以發(fā)揮作用,能增大搜索范圍,提高魯棒性。
pr.setMaxPlates(4);這句話設(shè)置EasyPR最多查找多少個車牌。當(dāng)一副圖中有大于n個車牌時,EasyPR最終只會輸出可能性最高的n個。
下面來看pr的方法。plateRecognize()這個方法有兩個參數(shù),第一個代表輸入圖像,第二個代表輸出的車牌CPlate集合。
vector<CPlate>plateVec;
Matsrc = imread(filepath);
int result =pr.plateRecognize(src, plateVec);當(dāng)返回結(jié)果result為0時,代表識別成功,否則失敗。CPlate類包含了車牌的各種信息,其中重要的如下:
CPlateplate = plateVec.at(i);
MatplateMat = plate.getPlateMat();
RotatedRectrrect = plate.getPlatePos();
stringlicense = plate.getPlateStr();plateMat代表車牌圖像,rrect代表車牌的可旋轉(zhuǎn)矩形位置,license
代表車牌字符串,例如“藍(lán)牌:蘇EUK722”。
這里說下如何去閱讀如下圖的識別結(jié)果。

第1行代表的是圖片的文件名。
第2行代表GroundTruth車牌,用后綴(g)表示。
第3行代表EasyPR檢測車牌,用后綴(d)表示。兩者形成一個配對
第4行代表兩者的字符差距。下面同上。本圖片中有3個車牌,所有共有三個配對。
最后的Recall等指標(biāo)代表的是整幅圖片的定位評價,考慮了三個配對的結(jié)果。有時檢測車牌的部分會用“無車牌”與“No string”替代。“無車牌”代表“定位不成功”,“No string”代表“定位成功但字符分割失敗”。
如果小伙伴想了解更多的關(guān)于項(xiàng)目的內(nèi)容,可以通過下載代碼,閱讀里面的說明文檔,也可以在自己的電腦上跑一下該程序。
源碼地址:https://gitee.com/easypr/EasyPR
往期精彩回顧 本站qq群851320808,加入微信群請掃碼:
