车牌识别

时间:2018-09-28 12:09:22

标签: python opencv image-processing ocr tesseract

我打算在印度车牌上执行OCR。我使用了Tesseract 4.0 beta,该版本使用LSTM引擎进行OCR。尽管不能识别出正确的字符。

我在拾取图像而没有模糊时使用了cv2.Laplacian(),并使用cv2.fastNlMeansDenoisingColored()对图像进行了降噪。

file_path = '/home/aayush/Downloads/Vision/number_plates/'
image_path = sorted(list(paths.list_images(file_path)))
#load image
for image in image_path:
 img = cv2.imread(image)
 img = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)
 #test 1
 #sharpen the image
 kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
 img = cv2.filter2D(img, -1, kernel)
 #thresholding
 ret,img_th = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
 #invert image
 inv_img = cv2.bitwise_not(img_th)
 config = ('-l eng --oem 1 --psm 6')

 #dilating image :
 kernel = np.ones((2,2),np.uint8)
 erosion = cv2.erode(inv_img,kernel,iterations = 1)
 text = pytesseract.image_to_string(inv_img, config=config)
 print(text)
 cv2.putText(img,text,(20,20),0, 5e-3 * 200, (255,255,255),2)
 cv2.imshow("Image:",inv_img)
 if cv2.waitKey(0) & 0xFF == ord('q'):
     break
cv2.destroyAllWindows()

对于预处理,我执行了以下步骤:

  1. 图片锐化
  2. 应用的Otsu阈值
  3. 消除了较小的噪音/轮廓
  4. 倒置图像
  5. 使用Tesseract 4.0 --oem 1(使用LSTM作为检测模块)的OCR

Orignal image

otsu thresholded image

Contour removed image

检测到的输出: OL 1CT 5079 (看起来还可以)

能否请您提出其他改善图像质量(减少噪点)的预处理措施?

还可以在Tesseract中限制特殊字符吗?

0 个答案:

没有答案