Я пытаюсь разработать простое приложение для ПК для распознавания номерных знаков (Java + OpenCV + Tess4j). Изображения не очень хорошие (в дальнейшем они будут хорошими). Я хочу предварительно обработать изображение для tesseract, и я застрял на обнаружении номерного знака (обнаружение прямоугольника).
Мои шаги:
1) Исходное изображение
Mat img = new Mat();
img = Imgcodecs.imread("sample_photo.jpg");
Imgcodecs.imwrite("preprocess/True_Image.png", img);
2) Серые шкалы
Mat imgGray = new Mat();
Imgproc.cvtColor(img, imgGray, Imgproc.COLOR_BGR2GRAY);
Imgcodecs.imwrite("preprocess/Gray.png", imgGray);
3) Гауссовское размытие
Mat imgGaussianBlur = new Mat();
Imgproc.GaussianBlur(imgGray,imgGaussianBlur,new Size(3, 3),0);
Imgcodecs.imwrite("preprocess/gaussian_blur.png", imgGaussianBlur);
4) Адаптивный порог
Mat imgAdaptiveThreshold = new Mat();
Imgproc.adaptiveThreshold(imgGaussianBlur, imgAdaptiveThreshold, 255, CV_ADAPTIVE_THRESH_MEAN_C ,CV_THRESH_BINARY, 99, 4);
Imgcodecs.imwrite("preprocess/adaptive_threshold.png", imgAdaptiveThreshold);
Здесь должен быть 5-й шаг, который является обнаружением области пластины (возможно, даже без коррекции на данный момент).
Я обрезал нужный регион из изображения (после 4-го шага) с помощью Paint и получил:
Затем я сделал OCR (через tesseract, tess4j):
File imageFile = new File("preprocess/adaptive_threshold_AFTER_PAINT.png");
ITesseract instance = new Tesseract();
instance.setLanguage("eng");
instance.setTessVariable("tessedit_char_whitelist", "acekopxyABCEHKMOPTXY0123456789");
String result = instance.doOCR(imageFile);
System.out.println(result);
и получил (достаточно хороший?) результат - "Y841ox EH" (почти верно)
Как я могу обнаружить и обрезать область пластины после 4-го шага? Могу ли я внести некоторые изменения (улучшения) в 1-4 шага? Хотелось бы увидеть пример, реализованный через Java + OpenCV (а не JavaCV).
Спасибо заранее.
EDIT (спасибо @Abdul Fatir)
Ну, я предоставляю для меня (для меня по крайней мере) образец кода (Netbeans + Java + OpenCV + Tess4j) для тех, кто интересуется этим вопросом. Код не самый лучший, но я сделал его только для учебы.
http://pastebin.com/H46wuXWn (не забудьте поместить папку tessdata в папку проекта)