EasyPR - 開源的智能中文車牌識別系統

車牌識別,是人工智能以及 OCR 領域的重要應用場景。通過拍攝的包含車牌的照片,實現識別出車牌文字的功能,能夠大大提高車輛識別效率,在交通違規檢測、罪案偵查中能提供有力支持,而 EasyPR,能夠快速準確地識別中文車牌。

簡介

EasyPR,是 liuruoze 在 Gitee 上開源的中文車牌識別系統,倉庫位於
https://gitee.com/liuruoze/EasyPR,目前版本爲 1.6。

EasyPR 的目標是成爲一個簡單、高效、準確的非限制場景 (unconstrained situation) 下的車牌識別庫。相比於其他的車牌識別系統,EasyPR 有如下特點:

使用

EasyPR 提供了跨平臺的版本,包括:Windows,C#,Android,Linux,IOS,Mac,Java 和懶人版,其中懶人版無需配置 OpenCV。當前 EasyPR 是基於 opencv3.0 版本開發的,3.0 及以上的版本應該可以兼容。

EasyPR 可以針對原始的車牌拍攝圖片進行識別。假設我們有如下的原始圖片,需要識別出中間的車牌字符與顏色:

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

接着,我們對圖塊進行 OCR 過程,在 EasyPR 中,叫做字符識別(CharsRecognize)。我們得到了一個包含車牌顏色與字符的字符串:

“藍牌:蘇EUK722”

EasyPR 的調用非常簡單,下面是一段示例代碼:

	CPlateRecognize pr;
	pr.setResultShow(false);
	pr.setDetectType(PR_DETECT_CMSER);     
	vector<CPlate> plateVec;
	Mat src = imread(filepath);	int result = pr.plateRecognize(src, plateVec);

我們首先創建一個 CPlateRecognize 的對象 pr,接着設置 pr 的屬性。

pr.setResultShow(false);

這句設置 EasyPR 是否打開結果展示窗口,如下圖。設置爲 true 就是打開,否則就是關閉。在需要觀看定位結果時,建議打開,快速運行時關閉。

pr.setDetectType(PR_DETECT_CMSER);

這句話設置 EasyPR 採用的車牌定位算法。CMER 代表文字定位方法,SOBEL 和 COLOR 分別代表邊緣和顏色定位方法。可以通過 "|" 符號結合。

pr.setDetectType(PR_DETECT_COLOR | PR_DETECT_SOBEL);

除此之外,還可以有一些其他的屬性值設置:

pr.setLifemode(true);

這句話設置開啓生活模式,這個屬性在定位方法爲 SOBEL 時可以發揮作用,能增大搜索範圍,提高魯棒性。

pr.setMaxPlates(4);

這句話設置 EasyPR 最多查找多少個車牌。當一副圖中有大於 n 個車牌時,EasyPR 最終只會輸出可能性最高的 n 個。

下面來看 pr 的方法。plateRecognize() 這個方法有兩個參數,第一個代表輸入圖像,第二個代表輸出的車牌 CPlate 集合。

vector<CPlate> plateVec;
Mat src = imread(filepath);int result = pr.plateRecognize(src, plateVec);

當返回結果 result 爲 0 時,代表識別成功,否則失敗。

CPlate 類包含了車牌的各種信息,其中重要的如下:

CPlate plate = plateVec.at(i);Mat plateMat = plate.getPlateMat();RotatedRect rrect = plate.getPlatePos();string license = plate.getPlateStr();

plateMat 代表車牌圖像,rrect 代表車牌的可旋轉矩形位置,license 代表車牌字符串,例如 “藍牌:蘇 EUK722”。

識別結果中,第 1 行代表的是圖片的文件名。第 2 行代表 GroundTruth 車牌,用後綴(g)表示。第 3 行代表 EasyPR 檢測車牌,用後綴(d)表示。兩者形成一個配對,第 4 行代表兩者的字符差距。

下面同上。本圖片中有 3 個車牌,所有共有三個配對。最後的 Recall 等指標代表的是整幅圖片的定位評價,考慮了三個配對的結果。

有時檢測車牌的部分會用 “無車牌” 與“No string”替代。“無車牌”代表 “定位不成功”,“No string” 代表“定位成功但字符分割失敗”。

總結

EasyPR 作爲一箇中文車牌識別系統,目標是成爲一個簡單、高效、準確的非限制場景 (unconstrained situation) 下的車牌識別庫。EasyPR 基於 openCV,能夠識別中文,且識別率較高,可以應用在實踐中。

來源:

https://www.toutiao.com/article/7084857257946579464/?log_from=8fc1af7e2b818_1656467270451

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/on0yz_KisuzJWyWyuisXAQ