【发布时间】:2013-10-16 14:41:53
【问题描述】:
我正在开发一个可以识别车牌 (ANPR) 的应用。第一步是从图像中提取车牌。我正在使用 OpenCV 根据宽度/高度比检测板块,效果很好:
但如您所见,OCR 结果非常糟糕。
我在我的Objective C (iOS) 环境中使用tesseract。这些是我在启动引擎时的init 变量:
// init the tesseract engine.
tesseract = new tesseract::TessBaseAPI();
int initRet=tesseract->Init([dataPath cStringUsingEncoding:NSUTF8StringEncoding], [language UTF8String]);
tesseract->SetVariable("tessedit_char_whitelist", "BCDFGHJKLMNPQRSTVWXYZ0123456789-");
tesseract->SetVariable("language_model_penalty_non_freq_dict_word", "1");
tesseract->SetVariable("language_model_penalty_non_dict_word ", "1");
tesseract->SetVariable("load_system_dawg", "0");
如何改进结果?我需要让 OpenCV 做更多的图像处理吗?或者有什么我可以用 tesseract 改进的吗?
【问题讨论】:
-
我会尝试拉直车牌,即。 e.做一些图像处理,使它们成为一个边平行于图片边的矩形。如果字符倾斜,许多 OCR 工具都会出现问题。
-
我已经使用了这个教程:felix.abecassis.me/2011/10/opencv-rotation-deskewing。我没有在上面的图片中显示结果,但它没有帮助......
-
您能否分享您的基于宽度/高度比检测板的opencv代码?我可以帮助你处理 tesseract OCR 部分,但不知道如何在 opencv 中编程。
-
为什么图像上的指示器正确显示了该区域,而您从中得到的只是一个包含边界框?沿着板边缘对齐这些蓝线应该可以始终为您提供正确剪辑的结果。
-
效果如何?很想知道您的解决方案是什么!
标签: ios objective-c opencv image-processing tesseract