HyperLPR_py3 算法以Opencv和自己訓練的幾個模型,實現了車牌的快速檢測。流程如下:
- cv2.imread() 讀取圖片
- 使用 top_bottom_padding_rate 參數截取圖片(上下各截掉一小部分,減小圖片大小),並轉爲灰度圖 cv2.cvtColor(image_color_cropped, cv2.COLOR_RGB2GRAY)
- 使用訓練好的級聯分類器 cascade.xml 將車牌從彩色圖像中摳出來。 (比檢測出來的稍微大一點)
- 將摳出來的圖resize成 (136,72)
- 識別牌照種類:非藍牌的顏色翻轉(識別的時候都是白色的字符更方便) 模型:plate_type.h5
- 進行車牌的精確定位(上下):
→ 自適應閾值(cv2.adaptiveThreshold)獲取車牌號碼的二值圖(一共15個,包含各個blockSize)
→ 計算二值圖中車牌號碼的大致包圍框(cv2.findContours)
→ 存儲所有框的左上角和右下角的點
→ 使用左上角擬合上邊界,右下角擬合下邊界(cv2.fitLine),並將擬合直線上下移動3個像素,擴大範圍
→ 使用cv2.warpPerspective將圖像矯正(後面跟了個deskew,作用抗傾斜,沒理解)
→ 使用 model12.h5 模型尋找左右邊界
定位完成, 號碼檢測有兩種
1. 使用 ocr_plate_all_w_rnn_2.h5 模型直接回歸車牌號 (效果較差)
2.使用先分割後識別的方法
使用16像素寬的窗口掃過車牌,存儲掃過的數據,使用char_judgement.h5 判斷該窗口是否爲號碼,然後識別 - 顯示車牌和置信度
備註: 看完點個贊,github加個星。