我正在嘗試自動讀取車牌。 我已經培訓了一個OpenCV哈爾級聯分類器,以隔離源圖像中的牌照以合理成功。這裏是一個例子(注意黑色邊界矩形)。 在此之後,我試圖清理車牌爲兩種:OpenCV:爲OCR分離車牌字符
- 通過SVM隔離分類單個字符。
- 將清潔後的車牌提供給Tesseract OCR並提供有效字符的白名單。
要清理的板塊,我執行以下變換:
# Assuming 'plate' is a sub-image featuring the isolated license plate
height, width = plate.shape
# Enlarge the license plate
cleaned = cv2.resize(plate, (width*3,height*3))
# Perform an adaptive threshold
cleaned = cv2.adaptiveThreshold(cleaned ,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,7)
# Remove any residual noise with an elliptical transform
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
cleaned = cv2.morphologyEx(cleaned, cv2.MORPH_CLOSE, kernel)
我在這裏的目標是同時去除任何噪音的字符黑色,背景分離爲白色。
使用這種方法,我發現我一般得到的三種結果之一:
圖片太吵了。
過多去除(字符脫節)。
合理(所有字符分離並一致)。
I've included the original images and cropped plates in this album.
我認識到,由於車牌的性質不一致,我可能會需要一個更加動態的清理方法,但我不知道從何處着手。我試過玩閾值和形態函數的參數,但這通常只會導致對一幅圖像過度調整。
如何提高清理功能?
你稱之爲「太吵」實際上也是「太許多額外的字符或圖形「,這是美國盤子上的一個共同特徵。 –