Как обнаружить перевернутый текст в изображении / перевернутом изображении, используя OpenCV и Java
Я некоторое время сталкиваюсь с этой проблемой и до сих пор не могу ее решить.
Я использую OpenCV и Java, чтобы обнаружить карту по изображению и затем обрезать ее, затем все будет хорошо, если исходное изображение будет в правильной ориентации. Задача на данный момент такова: как повернуть изображение на 180 градусов? Или как обнаружить текст с ног на голову, тогда мы можем повернуть его в правильную ориентацию.
В результате я получаю от OpenCV в Java Mat
Объект содержит обрезанные карты.
Кто-нибудь сталкивался и решил это раньше, или есть идеи, пожалуйста, направьте меня к правильному решению.
Заранее спасибо.
Вот образцы изображений, которые я обрезал с оригиналов
Образец 1
Образец 2
1 ответ
Просто запустите ваш код, и если он ничего не найдет при первом проходе, вы можете просто повернуть изображение и попробовать снова? Или вы можете попробовать сканировать только небольшую часть карты, и тогда вы сможете определить, находится ли карта в правильном положении или нет.
Вам придется сесть и обдумать, как это можно сделать лучше всего.
Что касается вращения изображений, вы пытались найти его? Потому что, если вы используете буферизованное изображение, вращение может быть выполнено с помощью простого AffineTransform:
AffineTransform at = AffineTransform.getRotateInstance(Math.PI, image.getWidth()/2, image.getHeight()/2.0);
BufferedImage myRotatedImage = createTransformed(image, at);
Изменить: для поворота Mat
объект, который вы можете использовать:
Imgproc.warpAffine(Mat source, Mat dest, Mat M, Size size)
Взято с: http://docs.opencv.org/java/3.0.0/